Apaceh HTTP Server 대용으로 쓰이는 것 같다.
현재까지는 설정과 성능이 훨 뛰어나다 한다.

tomcat 과 연동도 시도해봐야겠다.


http://wiki.nginx.org




dasida 님께 정보 감사.
출처: http://www.itroad.org/?mid=p_java&document_srl=22455

DBManager.java
 

더보기


db.properties

더보기

 

출처: http://www.itroad.org/?mid=p_java&document_srl=22455

 

'JAVA/JSP' 카테고리의 다른 글

[jQuery] table 내용 엑셀다운로드  (0) 2018.04.17
DB 별 JDBC Driver  (0) 2014.04.04
DBManager.java  (0) 2011.11.10
javamail을 이용한 메일보내기.  (0) 2011.07.22
class 파일의 컴파일 버전 확인하기.  (3) 2011.04.08
ResultSet 의 Null 체크.  (0) 2011.03.31
죽인다.....

 http://www.zeroturnaround.com/jrebel/

class나 xml 변경시 republish 하지 않고 바로 적용되게 해주는 플러그인.. 

자세한 내용은 검색 및 홈페이지 방문.

http://freemind.sourceforge.net/wiki/index.php/Main_Page


'PDS' 카테고리의 다른 글

toad 11.6 and 12.1  (0) 2014.01.02
VeraMono + 한글폰트  (0) 2012.11.27
freeMind - 마인드맵 프로그램.  (0) 2011.07.26
openCSV  (0) 2011.01.28
파일비교, 파일 동기화 프로그램. - FreeFileSync  (0) 2011.01.28
UltraMon - 듀얼 모니터 제어  (0) 2010.11.02
일단 필요한 것.
javamail.jar   (javamail)
activation.jar (JAF - java activation Framework)

그리고 테스트 해볼수 있는 smtp 서버.

요런것도 괜찮음.


        // SMTP IP
        String smtphost = "xxx.xxx.xxx.xxx";
       
        // 보내는 사람
        String mailFrom = "test@daum.net";
       
        // 받는 사람
        String mailTo = "test@naver.com";
       
       
        // 메일제목
        String subject = "메일테스트입니다.";
       
        // 메일본문
        String contents =     "<div>" +
                            "<h2>테스트 메일</h2>" +
                            "<br><br>" +
                            "</div>";
       
        Properties properties = System.getProperties();
        properties.put("mail.smtp.host", smtphost);
       
        // 인증이 필요한 경우
       
//        String user = "";
//        String password = "";
//        properties.put("mail.smtp.auth", "true");
//        Authenticator authenticator = new MyAuthenticator(user, password);
//        Session session = Session.getDefaultInstance(properties, authenticator);
       
        Session session = Session.getDefaultInstance(properties, null);

        MimeMessage message = new MimeMessage(session);
        InternetAddress fromAddress = new InternetAddress(mailFrom, "sender", "UTF-8");
        InternetAddress toAddress = new InternetAddress(mailTo, "receiver", "UTF-8");

        message.setFrom(fromAddress);
        message.addRecipient(MimeMessage.RecipientType.TO, toAddress);
        message.setSubject(subject, "UTF-8");
        message.setContent(contents, "text/html; charset=UTF-8");
       
        Transport.send(message);



할때마다 찾아쓰기 귀찮아;;

'JAVA/JSP' 카테고리의 다른 글

DB 별 JDBC Driver  (0) 2014.04.04
DBManager.java  (0) 2011.11.10
javamail을 이용한 메일보내기.  (0) 2011.07.22
class 파일의 컴파일 버전 확인하기.  (3) 2011.04.08
ResultSet 의 Null 체크.  (0) 2011.03.31
개발 초기에 charset 맞추기.  (0) 2010.11.25
출처 : http://levin01.tistory.com/1558

<data-sources>

     <!-- MySQLDBCPSetting -->
     <data-source type="org.apache.commons.dbcp.BasicDataSource">
          <set-property property="driverClassName" value="org.gjt.mm.mysql.Driver" />
          <set-property property="username" value="username" />
          <set-property property="password" value="password" />
          <set-property property="url" value="jdbc:mysql://localhost/test?autoReconnect=true" />
          <set-property property="maxActive" value="10" />
          <set-property property="maxIdle" value="30" />
          <set-property property="maxWait" value="10000" />
          <set-property property="defaultAutoCommit" value="true" />
          <set-property property="defaultReadOnly" value="false" />
    </data-source>
   
     <!-- OracelDBCPSetting -->

     <!-- data-source type="org.apache.commons.dbcp.BasicDataSource">
      <set-property property="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
      <set-property property="username" value="username" />
      <set-property property="password" value="password" />
      <set-property property="url" value="jdbc:oracle:thin:@localhost:1521:SID" />
      <set-property property="maxActive" value="100" />
      <set-property property="maxIdle" value="30000" />
      <set-property property="maxWait" value="100" />
      <set-property property="defaultAutoCommit" value="true" />
     </data-source -->


</data-sources>   

그다음 접속은 꼭 Action클래스 안에서 하셔야 합니다. DataSource를 가져올때 상속받은 Action클래스의 getDataSource() 메소를 사용하기 때문이죠.


DataSource ds = getDataSource(request);


그다음 나머지 처리는 일반적인 방식과 똑 같습니다^^



출처 : http://levin01.tistory.com/1558


struts 1.3 이상 버전에서는..


JNDI 설정 해서 DataResource 사용하는 방법이나,

DBConnection Pool Class 하나 만들어서 사용하던지,

뭐 알아서!





출처: http://www.webmini.net/43964



Hex Code Entity Code Number Code Character Description
  &quot; &#34; " Quotation Mark
  &amp; &#38; & Ampersand
  &frasl; &#47; / Slash
  &lt; &#60; < Less Than Sign
  &gt; &#62; > Greater Than Sign
  &sbquo; &#130; Single Low-9 Quote
  &bdquo; &#132; Double Low-9 Quote
&#x2020; &dagger; &#134; Dagger
  &Dagger; &#135; Double Dagger
  &permil; &#137; Per Mill Sign
  &lsaquo; &#139; Single Left Angle Quote
  &lsquo; &#145; Left Single Quote
  &rsquo; &#146; Right Single Quote
  &ldquo; &#147; Left Double Quote
  &rdquo; &#148; Right Double Quote
  &trade; &#153; Trademark Symbol
  &rsaquo; &#155; Single Right Angle Quote
&#xA0; &nbsp; &#160;   Non Breaking Space
&#xA1; &iexcl; &#161; ¡ Inverted Exclamation Point
&#xA2; &cent; &#162; ¢ Cent Sign
&#xA3; &pound; &#163; £ Pound Sterling
&#xA4; &curren; &#164; ¤ General Currency Sign
&#xA5; &yen; &#165; ¥ Yen Sign
&#xA6; &brvbar; &#166; ¦ Broken Vertical Bar
&#xA7; &sect; &#167; § Section Sign
&#xA8; &uml; &#168; ¨ Umlaut (Dieresis)
&#xA9; &copy; &#169; © Copyright Symbol
&#xAA; &ordf; &#170; ª Feminine Ordinal
&#xAB; &laquo; &#171; « Left Angle Quote, Left Guillemet
&#xAC; &not; &#172; ¬ Not Sign
&#xAD; &shy; &#173; ­
Soft Hyphen
&#xAE; &reg; &#174; ® Registered Trademark
&#xAF; &macr; &#175; ¯ Macron, Overline
&#xB0; &deg; &#176; ° Degree Sign
&#xB1; &plusmn; &#177; ± Plus or Minus
&#xB2; &sup2; &#178; ² Superscript Two
&#xB3; &sup3; &#179; ³ Superscript Three
&#xB4; &acute; &#180; ´ Acute Accent
&#xB5; &micro; &#181; µ Micro Symbol
&#xB6; &para; &#182; Paragraph Symbol
&#xB7; &middot; &#183; · Middle Dot
&#xB8; &cedil; &#184; ¸ Cedilla
&#xB9; &sup1; &#185; ¹ Superscript One
&#xBA; &ordm; &#186; º Masculine Ordinal
&#xBB; &raquo; &#187; » Right Angle Quote, Right Guillemet
&#xBC; &frac14; &#188; ¼ One Fourth Fraction
&#xBD; &frac12; &#189; ½ One Half Fraction
&#xBE; &frac34; &#190; ¾ Three Forths Fraction
&#xBF; &iquest; &#191; ¿ Inverted Question Mark
&#xC0; &Agrave; &#192; À Capital A with Grave Accent
&#xC1; &Aacute; &#193; Á Capital A with Acute Accent
&#xC2; &Acirc; &#194; Â Capital A with Circumflex Accent
&#xC3; &Atilde; &#195; Ã Capital A with Tilde
&#xC4; &Auml; &#196; Ä Capital A with Dieresis/Umlaut
&#xC5; &Aring; &#197; Å Capital A with Ring
&#xC6; &AElig; &#198; Æ Capital AE Dipthong
&#xC7; &Ccedil; &#199; Ç Capital C with Cedilla
&#xC8; &Egrave; &#200; È Capital E with Grave Accent
&#xC9; &Eacute; &#201; É Capital E with Acute Accent
&#xCA; &Ecirc; &#202; Ê Capital E with Circumflex Accent
&#xCB; &Euml; &#203; Ë Capital E with Dieresis/Umlaut
&#xCC; &Igrave; &#204; Ì Capital I with Grave Accent
&#xCD; &Iacute; &#205; Í Capital I with Acute Accent
&#xCE; &Icirc; &#206; Î Capital I with Circumflex Accent
&#xCF; &Iuml; &#207; Ï Capital I with Dieresis/Umlaut
&#xD0; &ETH; &#208; Ð Capital Eth
&#xD1; &Ntilde; &#209; Ñ Capital N with Tilde
&#xD2; &Ograve; &#210; Ò Capital O with Grave Accent
&#xD3; &Oacute; &#211; Ó Capital O with Acute Accent
&#xD4; &Ocirc; &#212; Ô Capital O with Circumflex Accent
&#xD5; &Otilde; &#213; Õ Capital O with Tilde
&#xD6; &Ouml; &#214; Ö Capital O with Dieresis/Umlaut
&#xD7; &times; &#215; × Multiplication Sign
&#xD8; &Oslash; &#216; Ø Capital O with a Slash
&#xD9; &Ugrave; &#217; Ù Capital U with Grave Accent
&#xDA; &Uacute; &#218; Ú Capital U with Acute Accent
&#xDB; &Ucirc; &#219; Û Capital U with Circumflex Accent
&#xDC; &Uuml; &#220; Ü Capital U with Dieresis/Umlaut
&#xDD; &Yacute; &#221; Ý Capital Ywith Acute Accent
&#xDE; &THORN; &#222; Þ Capital Thorn
&#xDF; &szlig; &#223; ß Small Sharp s
&#xE0; &agrave; &#224; à Small a with Grave Accent
&#xE1; &aacute; &#225; á Small a with Acute Accent
&#xE2; &acirc; &#226; â Small a with Circumflex Accent
&#xE3; &atilde; &#227; ã Small a with Tilde
&#xE4; &auml; &#228; ä Small a with Dieresis/Umlaut
&#xE5; &aring; &#229; å Small a with Ring
&#xE6; &aelig; &#230; æ Small ae Dipthong
&#xE7; &ccedil; &#231; ç Small c with Cedilla
&#xE8; &egrave; &#232; è Small e with Grave Accent
&#xE9; &eacute; &#233; é Small e with Acute Accent
&#xEA; &ecirc; &#234; ê Small e with Circumflex Accent
&#xEB; &euml; &#235; ë Small e with Dieresis/Umlaut
&#xEC; &igrave; &#236; ì Small i with Grave Accent
&#xED; &iacute; &#237; í Small i with Acute Accent
&#xEE; &icirc; &#238; î Small i with Circumflex Accent
&#xEF; &iuml; &#239; ï Small i with Dieresis/Umlaut
&#xF0; &eth; &#240; ð Small eth
&#xF1; &ntilde; &#241; ñ Small n with Tilde
&#xF2; &ograve; &#242; ò Small o with Grave Accent
&#xF3; &oacute; &#243; ó Small o with Acute Accent
&#xF4; &ocirc; &#244; ô Small o with Circumflex Accent
&#xF5; &otilde; &#245; õ Small o with Tilde
&#xF6; &ouml; &#246; ö Small o with Dieresis/Umlaut
&#xF7; &divide; &#247; ÷ Division Sign
&#xF8; &oslash; &#248; ø Small o with a Slash
&#xF9; &ugrave; &#249; ù Small u with Grave Accent
&#xFA; &uacute; &#250; ú Small u with Acute Accent
&#xFB; &ucirc; &#251; û Small u with Circumflex Accent
&#xFC; &uuml; &#252; ü Small u with Dieresis/Umlaut
&#xFD; &yacute; &#253; ý Small y with Acute Accent
&#xFE; &thorn; &#254; þ Small Thorn
&#xFF; &yuml; &#255; ÿ Small y with Dieresis/Umlaut
&#x0192; &fnof; &#402; ƒ Small f with hook
&#x0391; &Alpha; &#913; Α Greek Capital Letter Alpha
&#x0392; &Beta; &#914; Β Greek Capital Letter Beta
&#x0393; &Gamma; &#915; Γ Greek Capital Letter Gamma
&#x0394; &Delta; &#916; Δ Greek Capiral Letter Delta
&#x0395; &Epsilon; &#917; Ε Greek Capital Letter Epsilon
&#x0396; &Zeta; &#918; Ζ Greek Capital Letter Zeta
&#x0397; &Eta; &#919; Η Greek Capital Letter Eta
&#x0398; &Theta; &#920; Θ Greek Capital Letter Theta
&#x0399; &Iota; &#921; Ι Greek Capital Letter Iota
&#x039A; &Kappa; &#922; Κ Greek Capital Letter Kappa
&#x039B; &Lambda; &#923; Λ Greek Capital Letter Lambda
&#x039C; &Mu; &#924; Μ Greek Capital Letter Mu
&#x039D; &Nu; &#925; Ν Greek Capital Letter Nu
&#x039E; &Xi; &#926; Ξ Greek Capital Letter Xi
&#x039F; &Omicron; &#927; Ο Greek Capital Letter Omicron
&#x03A0; &Pi; &#928; Π Greek Capital Letter Pi
&#x03A1; &Rho; &#929; Ρ Greek Capital Letter Rho
&#x03A3; &Sigma; &#931; Σ Greek Capiral Letter Sigma
&#x03A3; &Tau; &#932; Τ Greek Capital Letter Tau
  &Upsilon; &#933; Υ Greek Capital Letter Upsilon
  &Phi; &#934; Φ Greek Capital Letter Phi
  &Chi; &#935; Χ Greek Capital Letter Chi
  &Psi; &#936; Ψ Greek Capital Letter Psi
  &Omega; &#937; Ω Greek Capital Letter Omega
  &alpha; &#945; α Greek Small Letter Alpha
  &beta; &#946; β Greek Small Letter Beta
  &gamma; &#947; γ Greek Small Letter Gamma
  &delta; &#948; δ Greek Small Letter Delta
  &epsilon; &#949; ε Greek Small Letter Epsilon
  &zeta; &#950; ζ Greek Small Letter Zeta
  &eta; &#951; η Greek Small Letter Eta
  &theta; &#952; θ Greek Small Letter Theta
  &iota; &#953; ι Greek Small Letter Iota
  &kappa; &#954; κ Greek Small Letter Kappa
  &lambda; &#955; λ Greek Small Letter Lambda
  &mu; &#956; μ Greek Small Letter Mu
  &nu; &#957; ν Greek Small Letter Nu
  &xi; &#958; ξ Greek Small Letter Xi
  &omicron; &#959; ο Greek Small Letter Omicron
  &pi; &#960; π Greek Small Letter Pi
  &rho; &#961; ρ Greek Small Letter Rho
  &sigmaf; &#962; ς Greek Small Letter Final Sigma
  &sigma; &#963; σ Greek Small Letter Sigma
  &tau; &#964; τ Greek Small Letter Tau
  &upsilon; &#965; υ Greek Small Letter Upsilon
  &phi; &#966; φ Greek Small Letter Phi
  &chi; &#967; χ Greek Small Letter Chi
  &psi; &#968; ψ Greek Small Letter Psi
  &omega; &#969; ω Greek Small Letter Omega
  &thetasym; &#977; ϑ Greek Small Letter Theta Symbol
  &upsih; &#978; ϒ Greek Upsilon with Hook Symbol
  &piv; &#982; ϖ Greek pi Symbol
  &bull; &#8226; Bullet / Black Small Circle
  &hellip; &#8230; Horizontal Ellipsis
  &prime; &#8242; Prime / Minutes / Feet
  &Prime; &#8243; Double Prime / Seconds / Inches
  &oline; &#8254; Overline
  &image; &#8465; Blackletter Capital I / Imaginary Part
  &weierp; &#8472; Script Capital P / Power Set
  &real; &#8476; Blackletter Capital R / Real Part Symbol
  &alefsym; &#8501; Alef Symbol / First Transfinite Cardinal
  &larr; &#8592; Left Arrow
  &uarr; &#8593; Up Arrow
  &rarr; &#8594; Right Arrow
  &darr; &#8595; Down Arrow
  &harr; &#8596; Left-Right Arrow
  &crarr; &#8629; Carrige Return / Downward Left Arrow
  &lArr; &#8656; Double Left Arrow
  &uArr; &#8657; Double Up Arrow
  &rArr; &#8658; Double Right Arrow
  &dArr; &#8659; Double Down Arrow
  &hArr; &#8660; Double Left-Right Arrow
  &forall; &#8704; For All
  &part; &#8706; Partial Differential
  &exist; &#8707; There Exists
  &empty; &#8709; Empty Set
  &nabla; &#8711; Nabla / Backwards Difference
  &isin; &#8712; Element Of
  &notin; &#8713; Not An Element of
  &ni; &#8715; Contains As Member
  &prod; &#8719; Product Sign
  &sum; &#8721; Sumation
  &minus; &#8722; Minus Sign
  &lowast; &#8727; Asterisk Operator
  &radic; &#8730; Square Root / Radical Sign
  &prop; &#8733; Proportional To
  &infin; &#8734; Infinity
  &ang; &#8736; Angle
  &and; &#8743; Logical And / Wedge
  &or; &#8744; Logical Or / Vee
  &cap; &#8745; Inersection / Cap
  &cup; &#8746; Union / Cup
  &int; &#8747; Integral
  &there4; &#8756; Therefore
  &sim; &#8764; Tilde Operator / Similar To / Varies With
  &cong; &#8773; Approximately Equal To
  &asymp; &#8776; Almost Equal To / Asymptotic To
  &ne; &#8800; Not Equal To
  &equiv; &#8801; Identical To
  &le; &#8804; Less Than or Equal To
  &ge; &#8805; Greater Than or Equal To
  &sub; &#8834; Subset Of
  &sup; &#8835; Superset Of
  &nsub; &#8836; Not A Subset Of
  &sube; &#8838; Subset Of Or Equal To
  &supe; &#8839; Superset Of Or Equal To
  &oplus; &#8853; Circled Plus / Direct Sum
  &otimes; &#8855; Circled Times / Vector Product
  &perp; &#8869; Up Tack / Orthogonal To / Perpendicular
  &sdot; &#8901; Dot Operator
  &lceil; &#8968; Left Ceiling / Apl Upstile
  &rceil; &#8969; Right Ceiling
  &lfloor; &#8970; Left Floor / Apl Downstile
  &rfloor; &#8971; Right Floor
  &lang; &#9001; Left-Pointing Angle Bracket / Bra
  &rang; &#9002; Right-Pointing Angle Bracket / Ket
  &loz; &#9674; Lozenge
  &spades; &#9824; Black Spade Suit
  &clubs; &#9827; Black Club Suit
  &hearts; &#9829; Black Heart Suit
  &diams; &#9830; Black Diamond Suit
출처 : http://www.happyjung.com/gnuboard/bbs/board.php?bo_table=lecture&wr_id=181&sca=ASP&page=4

1. 현재 홈페이지 UTL 찾기
  <%=request.servervariables("HTTP_HOST") %>
  예> happyjung.com

2. 현재 페이지 경로 찾기
  <%=request.servervariables("HTTP_url") %>
  예> /v4/index.php

3. 현재 페이지의 URL 찾기
  <%=request.servervariables("HTTP_HOST") & request.servervariables("HTTP_url") %>
  예> happyjung.com/v4/index.php




출처 : http://www.happyjung.com/gnuboard/bbs/board.php?bo_table=lecture&wr_id=181&sca=ASP&page=4

'ASP' 카테고리의 다른 글

[ASP] 현재 URL 및 웹페이지 경로 찾기  (0) 2011.06.24
asp 에서 if 문에 null 값 비교하기.  (0) 2011.05.09
request 객체  (0) 2008.11.12
배열 크기 알기.  (2) 2008.10.29
현재시간  (0) 2008.10.21
<script language="JavaScript">
//모바일 페이지로 이동.
//http://en.wikipedia.org/wiki/List_of_user_agents_for_mobile_phones
var uAgent = navigator.userAgent.toLowerCase();
var mobilePhones = new Array('iphone','ipod','android','blackberry','windows ce',
        'nokia','webos','opera mini','sonyericsson','opera mobi','iemobile');
for(var i=0;i<mobilePhones.length;i++)
    if(uAgent.indexOf(mobilePhones[i]) != -1)
        document.location = "http://"+ location.host +"/m" + location.pathname;
</script>

SHELL> sudo lshw


이 명령어가 없으면 설치 해야함.

SHELL> sudo apt-get install lshw


gui 버전은
SHELL> sudo apt-get install hardinfo
SHELL> sudo apt-get install lshw-gtk



pci 장치만 확인하려면

SHELL> lspci



참고 : http://blog.foxb.kr/54

'LINUX_UNIX' 카테고리의 다른 글

[ubuntu] ubuntu server 설치 후 GUI 최소 설치.  (1) 2014.06.08
ubunutu - jdk 설치  (0) 2014.06.02
[ubuntu] 하드웨어 정보 보기  (0) 2011.06.02
CharacterSet 과 Encoding  (0) 2011.01.28
터미널에서 한글 깨짐.  (0) 2011.01.11
linux 한글패치된 unzip 5.52  (0) 2011.01.11
http://www.window7theme.com/

'SITE' 카테고리의 다른 글

코드카데미.  (0) 2012.06.20
http://curriq.com/  (0) 2012.05.11
윈도우7 무료 테마 사이트.  (0) 2011.05.26
Crack 검색 사이트.  (0) 2011.05.13
JAVA DECOMPILER 프로그램 사이트들.  (0) 2010.12.02
삼성SDS OpenSource #2 - Rapidant  (0) 2010.11.15
//XMLHttpRequest객체를 생성해 주는 getXMLHttpRequest()함수

function getXMLHttpRequest() {
 if (window.ActiveXObject) {
  try {
   return new ActiveXObject("Msxml2.XMLHTTP");
  } catch(e) {
   try {
    return new ActiveXObject("Microsoft.XMLHTTP");
   } catch(e1) { return null; }
  }
 } else if (window.XMLHttpRequest) {
  return new XMLHttpRequest();
 } else {
  return null;
 }
}


//생성된 XMLHttpRequest객체를 저장할 전역변수
var httpRequest = null;

//XMLHttpRequest객체를 사용해서 지정한방식,지정한 URL, 첨부할 파라미터 값을 사용하여 웹 서버에 요청을 전송

function sendRequest(url, params, callback, method) {
 httpRequest = getXMLHttpRequest();
 var httpMethod = method ? method : 'GET';
 if (httpMethod != 'GET' && httpMethod != 'POST') {
  httpMethod = 'GET';
 }
 var httpParams = (params == null || params == '') ? null : params;
 var httpUrl = url;
 if (httpMethod == 'GET' && httpParams != null) {
  httpUrl = httpUrl + "?" + httpParams;
 }
 httpRequest.open(httpMethod, httpUrl, true);
 httpRequest.setRequestHeader( //컨텐트 타입 지정
  'Content-Type', 'application/x-www-form-urlencoded');
 httpRequest.onreadystatechange = callback; //readyState값이 바뀔 때 호출 될 콜백 함수 지정
 httpRequest.send(httpMethod == 'POST' ? httpParams : null); //Http요청 방식이 'POST'이면 send()함수를 통해 파라미터 파라미터 전송
}
http://astalavista.box.sk

아 예전에 참 잘 활용했던 사이트인데..

존재를 잊고 있다가 문득 생각나서 겨우 찾았음..


광고들이 19금이라. 주의해서 검색할 것;;;;;;

'SITE' 카테고리의 다른 글

http://curriq.com/  (0) 2012.05.11
윈도우7 무료 테마 사이트.  (0) 2011.05.26
Crack 검색 사이트.  (0) 2011.05.13
JAVA DECOMPILER 프로그램 사이트들.  (0) 2010.12.02
삼성SDS OpenSource #2 - Rapidant  (0) 2010.11.15
삼성SDS OpenSource #1 - AnyFrame  (0) 2010.11.15

예)

if isnull(test) then
 어쩌구
end if


'ASP' 카테고리의 다른 글

[ASP] 현재 URL 및 웹페이지 경로 찾기  (0) 2011.06.24
asp 에서 if 문에 null 값 비교하기.  (0) 2011.05.09
request 객체  (0) 2008.11.12
배열 크기 알기.  (2) 2008.10.29
현재시간  (0) 2008.10.21
예>

CREATE TABLE [dbo].[MEMBER](
    [SEQNO] [decimal](10, 0) identity (1,1) NOT NULL,


identity (1,1) : 1부터 시작해서, 1씩 증가.


시작 - 실행- CMD 창에서

서비스 정지 
net stop 정지 할 서비스명(예 : OracleJobSchedulerORACLE10)

서비스 삭제
sc delete 삭제 할 서비스명(예 : OracleJobSchedulerORACLE10)





출처 : http://kjo1023.tistory.com/entry/%EC%9C%88%EB%8F%84%EC%9A%B0-%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%82%AD%EC%A0%9C-%EB%B0%A9%EB%B2%95

8XXXXX - ?XXXXXX


? => 숫자로 성별 구분.


9,0 : 국내 1800년대생 남,녀

1,2 : 국내 1900년대생 남,녀

3,4 : 국내 2000년대생 남,녀

5,6 : 외국 1900년대생 남,녀

7,8 : 외국 2000년대생 남,녀



javap -verbose class이름.



....


 SourceFile: "AddTermAction.java"
minor version: 0
major version: 50
Constant pool:


....





------------------------------------------------

major minor Java platform version
45 3 1.0
45 3 1.1
46 0 1.2
47 0 1.3
48 0 1.4
49 0 1.5
50 0 1.6

------------------------------------------------

'JAVA/JSP' 카테고리의 다른 글

DBManager.java  (0) 2011.11.10
javamail을 이용한 메일보내기.  (0) 2011.07.22
class 파일의 컴파일 버전 확인하기.  (3) 2011.04.08
ResultSet 의 Null 체크.  (0) 2011.03.31
개발 초기에 charset 맞추기.  (0) 2010.11.25
StringBuffer 초기화하여 재사용하기.  (0) 2010.11.22
  1. Favicon of http://dasida.tistory.com BlogIcon dsdstudio 2011.04.12 19:35 신고

    누구나 한번쯤은 겪는 컴파일러 버전문제 =_=
    1.4이하 버전은 vm자체를 버전별로 가지고있고 그 컴파일러로 컴파일해야 해당버전 바이너리가 되더라..
    1.6 컴파일러 에서 아무리 옵션으로 아래버전으로 낮춰도 옵션이 안먹더라구~

    • 아~ 젠장 어쩐지..
      그럼 상위버전 컴파일러로 하위버전으로 컴파일 할 수 있는 건 아직 1.6에서 1.5로 컴파일 하는 것 뿐인건가?

      오랜만에 와서 정보도 주고.. ^^; 땡큐!

  2. Favicon of http://dasida.tistory.com BlogIcon dsdstudio 2011.05.03 19:32 신고

    // 별말씀을 ㅎㅎ
    오래된 vm쓰는 고객사를 위해 1.4, 1.5, 1.6 모두 구비해놓는 센스가 필요 =_=/


CREATE TABLE 새로운 테이블명  AS SELECT * FROM 기존 테이블명
if(rs !=null) {

}

요딴거 안 먹힐 것이다.

rs.next() 의 결과값인 true 아니면 false 를 이용하여,




if(rs.next()){

do{
결과 있을 때 내용...

}while(rs.next());


}else{

결과 없을 때 내용..

}

'JAVA/JSP' 카테고리의 다른 글

javamail을 이용한 메일보내기.  (0) 2011.07.22
class 파일의 컴파일 버전 확인하기.  (3) 2011.04.08
ResultSet 의 Null 체크.  (0) 2011.03.31
개발 초기에 charset 맞추기.  (0) 2010.11.25
StringBuffer 초기화하여 재사용하기.  (0) 2010.11.22
ResultSet -> LIST  (0) 2010.11.03

자바 서블릿은 자바를 이용하여 웹페이지를 동적으로 생성할수 있게 하는

서버측 프로그램을 말한다. Java EE 에 포함되어 있다.

 

Java EE 는 자바 플랫폼인데 엔터프라이즈 에디션(Java Platform Enterprise Edition)

약자이다. 이것은 서버측 개발을 위한 플랫폼으로 웹 어플리케이션 서버를

구성하고 동작하는데 적합한 시스템이다. 이전에는 J2EE 라 불리었으나 JDK 5.0 부터

Java EE 로 변경되었다. 흔히 들어본 WAS 가 이것이다. 웹어플리케이션에 적합하다보니

쇼핑몰이나 웹관련 프로그램들을 개발하는데 사용되어진다.

 

Java Servlet 과 비슷한 기술을 지닌 것들로는 아파치 서버에서 돌아가는 펄, CGI, PHP

등이 있으며 IIS 에서 돌아가는 ASP 가 있다. 예전엔 CGI 를 많이 이용했으나 대형화

되고 응답에 대한 요청속도를 올리기 위해 좀더 가벼운 쓰레드를 사용하는 java Servlet

차용하게 되었다. 그리고 플랫폼 독립적으로 동작한다는 것도 또 하나의 장점이다.

 

자바 플랫폼과 서블릿 버전의 의존관계를 고려해 개발을 진행해야된다. 그 내용은 다음과 같다.


Servlet 3.0 ==> JavaEE 6

Servlet 2.5 ==> JavaEE 5, J2SE 5.0

Servlet 2.4 ==> J2EE 1.4, J2SE 1.3

Servlet 2.3 ==> J2EE 1.3, J2SE 1.2

 

다음은 아파치 톰캣과 서블릿의 호환정보이다.


Tomcat 3 supports the Servlet 2.2 and JSP 1.1 specifications.

Tomcat 4 supports the Servlet 2.3 and JSP 1.2 specifications.

Tomcat 5 supports the Servlet 2.4 and JSP 2.0 specifications.

 



출처 : http://mainia.tistory.com/510


문자셋과 인코딩의 정의

  • 문자셋 (charset, Character Set)
하나의 언어권에서 사용하는 언어를 표현하기 위한 모든 문자(활자)의 모임을 문자셋(charater set)이라고 한다. 다시 말하면 우리가 얘기하는 언어를 책으로 출판할 때 필요한 문자(활자)를 모두 모은 것이라고 생각하면 된다. 추가적으로 부호와 공백 등과 같은 특수 문자도 문자셋에 포함된다.
영어의 경우 알파벳 대소문자와 특수 문자 등으로 간단하게 문자셋을 구성할 수 있지만 한글의 경우 출판에서 가,나,다 등으로 출판함으로 훨씬 다양한 문자셋을 가지고, 또한 한자를 병행해서 사용함으로 문자셋의 범위는 더욱 넓어진다.
  • 추상적인 글자 셋은 여러 개의 인코딩을 가질 수 있다.
  • MIME 문자셋은 IANA에서 정의하며 인터넷 및 XML 파일에서 사용한다.
  • 인코딩 (encoding)
인코딩은 문자셋을 컴퓨터가 이해할 수 있는 바이트와 매핑하는 규칙이다. 예를 들면 ASCII Code에서 A,B,C 등은 문자셋이고 A는 코드 65, B는 코드 66 등 바이트 순서와 매핑한 것이 인코딩이다. 따라서 문자셋을 어떻게 매핑하느냐에 따라 하나의 문자셋이 다양한 인코딩을 가질 수 있다.
  • 추상적인 문자셋을 구체적인 bit-stream으로 표기하는 방법
  • 여러가지 문자셋을 동시에 표시할 수 있다.
  • 대부분의 인코딩에서는 대소문자를 구분하지 않는다.
  • 대한민국 문자셋(charater set)에서 가장 많이 사용하는 인코딩은 "UTF-8", "KSC5601", "ISO-8859-1" 이다.
  • 문자셋(인코딩)의 예
  • 한글 : 8bit KSC5601 (8bit EUC-KR, 7bit ISO-2022-KR, ISO-2022-Int)
  • 영문 : KSC5636, US-ASCII (둘 간의 차이는 화페 단위 뿐)
  • 한글+영문 : KSC5861 (EUC-KR), KSC5636 + KSC5601를 모두 포함한다.
  • 유니코드 : 4byte Unicode < ISO-10646 UCS (ISO-8859-1, UTF-8, UTF-16)

문자셋과 인코딩은 동일한 명칭을 가질 수 있어 서로 혼용하여 사용되는 경우가 많다.
EUC-KR은 원래 유닉스용 표준이었는데 인터넷으로 확장되어 사용된다.
KSC5601은 인터넷에서 원활한 한글(완성형) 사용을 위하여 정의된 표준이다.
EUC (Extended UNIX Code), UTF (UCS Transformation format)

기본 인코딩

  • Windows : 시스템 언어와 관련된 코드 페이지를 따름
    • 영문 Windows는 CP1252 인코딩을 사용
    • 한글 Windows는 MS949 인코딩을 사용
  • Unix : LANG 환경 변수로 지정된 로케일에 해당하는 인코딩
    • Solaris는 LANG 환경 변수가 ko, ko_KR일 경우 EUC-KR 인코딩을 사용
    • HP는 LANG 환경 변수가 ko_KR, ko_KR.eucKR일 경우 EUC-KR 인코딩을 사용
    • Unix에서 locale -a 명령을 사용하여 LANG 환경 변수에 지정 가능한 문자셋을 확인할 수 있다.
  • HTML : ISO-8859-1와 ISO-10646
  • XML : UTF-8
  • 웹 브라우져 : 내부적으로 모두 유니코드로 처리를 한다.
  • HTTP/1.0 : ISO-8859-1
  • HTTP (URL,URI) : US-ASCII, %hexadecimal_code, JavaScript escape() 함수 사용
  • Java : 유니코드 2.0
  • 직렬화된 Java Class : UTF-8
  • J2EE : ISO-8859-1
  • Oracle : UTF-8 (AL32UTF8), 한국에서는 KSC5601 (KO16KSC5601)




다양한 환경에서 인코딩 설정

웹 브라우져 설정

  1. "도구 -> 인터넷 옵션 -> 언어" 메뉴를 선택한다.
  2. 영어[en]와 한국어[ko]를 추가하고 원하는 언어를 가장 상단에 위치한다.

JVM 설정

  • 일반적으로 LANG 환경 변수를 설정해 주면 자동으로 설정이 된다.
locale -a                               Solaria unix 명령어로 지원 가능한 encoding을 확인한다.

env LANG ko csh에서 Encoding을 설정한다. (KSC5601, EUC-KR)

LANG=ko ksh에서 Encoding을 설정한다. (KSC5601, EUC-KR)

  • JVM 옵션 설정 (UTF-8, ISO-8859-1, KSC5601)
-Dfile.encoding=8859_1                  필수 항목

-Dfile.client.encoding=8859_1

-Dclient.encoding.override=8859_1 JVM 버전에 따라 (사용안함)

  • JSP를 사용하여 JVM 옵션 확인 (encoding.jsp)
file.encoding = <%= System.getProperty("file.encoding") %><br>

file.client.encoding = <%= System.getProperty("file.client.encoding") %><br>

client.encoding.override = <%= System.getProperty("client.encoding.override") %><br>

HTML 설정

HTML 파일을 UTF-8로 만들어 저장한다.

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

XML 설정

XML 파일을 UTF-8로 만들어 저장한다.

<?xml version="1.0" encoding="UTF-8" ?>

JSP 설정

JSP 파일을 UTF-8로 만들어 저장한다.

<%@ page pageEncoding="UTF-8" %>

<%@ page contentType="text/html;charset=UTF-8" %>

Servlet 설정

HTTP 요청의 인코딩 지정

request.setCharacterEncoding("UTF-8");

HTTP 응답의 인코딩 지정

response.setContentType("text/html; charset=UTF-8");

web.xml 설정

<mime-mapping>

<extension>html</extension>

<mime-type>text/html;charset=UTF-8</mime-type>

</mime-mapping>

Default Oracle Database 문자셋

  • Default Oracle Database 문자셋 : UTF-8 (AL32UTF8), 한국에서는 KSC5601 (KO16KSC5601)
  • AL32UTF8, KO16KSC5601 (KSC5601), WE8ISO8859P1 (8859_1)
  • Default Oracle Database 문자셋 확인 방법
sqlplus system/manager


select parameter || ' : ' || value parameter_value

from NLS_DATABASE_PARAMETERS

where parameter = 'NLS_CHARACTERSET'

or parameter = 'NLS_NCHAR_CHARACTERSET';


select name || ' : ' || substr(value$, 1, 40) parameter_value

from sys.props$

where name = 'NLS_CHARACTERSET';


select parameter || ' : ' || value parameter_value

from NLS_INSTANCE_PARAMETERS, V$NLS_PARAMETERS, NLS_SESSION_PARAMETERS;

  • Oracle Database 문자셋 변경 방법
환경 변수 또는 %ORACLE_HOME%/dbs/init[SID].ora 을 설정한다.
NLS_LANG='American_America.Ko16ksc5601'

ORA_NLS33='$ORACLE_HOME/ocommon/nls/admin/data'

NLS_DATE_FORMAT='YYYY-MM-DD'

  • DriverManager에서 문자셋 설정 방법
java.util.Properties props = new java.util.Properties();

props.put("charSet", "KSC5601" );

DriverManager.getConnection(dbUrl, props);



'LINUX_UNIX' 카테고리의 다른 글

ubunutu - jdk 설치  (0) 2014.06.02
[ubuntu] 하드웨어 정보 보기  (0) 2011.06.02
CharacterSet 과 Encoding  (0) 2011.01.28
터미널에서 한글 깨짐.  (0) 2011.01.11
linux 한글패치된 unzip 5.52  (0) 2011.01.11
kill 프로세스명 찾아서 강제로 죽이기  (0) 2011.01.06



java 에서 CSV 파일을 사용할 때 사용했었음.





'PDS' 카테고리의 다른 글

VeraMono + 한글폰트  (0) 2012.11.27
freeMind - 마인드맵 프로그램.  (0) 2011.07.26
openCSV  (0) 2011.01.28
파일비교, 파일 동기화 프로그램. - FreeFileSync  (0) 2011.01.28
UltraMon - 듀얼 모니터 제어  (0) 2010.11.02
YesClick 0.4.0  (0) 2010.10.25



간단한 인터페이스와 64비트지원

파일 비교를 해주며,

동기화 기능도 있음.


괜춘함.


'PDS' 카테고리의 다른 글

freeMind - 마인드맵 프로그램.  (0) 2011.07.26
openCSV  (0) 2011.01.28
파일비교, 파일 동기화 프로그램. - FreeFileSync  (0) 2011.01.28
UltraMon - 듀얼 모니터 제어  (0) 2010.11.02
YesClick 0.4.0  (0) 2010.10.25
Desy Edit (무료 편집기)  (0) 2010.10.18
/etc/sysconfig/i18n 편집

LANG="ko_KR.eucKR"
SUPPORTED="en_US.iso885915:en_US:en:ko_KR.eucKR:ko_KR:ko"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"

# source /etc/sysconfig/i18n 으로 적용


 vi ~/.bashrc 편집 (혹은 /etc/profile)

export LC_ALL=ko_KR.eucKR
export LANG=ko_KR.eucKR






linux에서 zip 파일을 풀었는데,
한글 파일들이 깨져서 나오더라.

단순히 터미널에서 한글을 표현하지 못해서 그런가 했는데,
아니더라.

그래서 검색했더니,

나오더라...



검색은 생활화.

희망을 준 주소 : http://kldp.org/node/82481

'LINUX_UNIX' 카테고리의 다른 글

CharacterSet 과 Encoding  (0) 2011.01.28
터미널에서 한글 깨짐.  (0) 2011.01.11
linux 한글패치된 unzip 5.52  (0) 2011.01.11
kill 프로세스명 찾아서 강제로 죽이기  (0) 2011.01.06
Linux 기본 Character Set 변경. utf8  (2) 2007.03.27
[ubuntu] ssh 와 ftp 설치.  (0) 2007.02.07

출처 : http://theeye.pe.kr


지금 작성할 글은 어찌보면 [이곳]의 글의 연장선상에서 봐야 할 글일꺼 같습니다.

ProxyAJP에 대해 잘 모르신다면 링크의 글을 보시거나 좀더 검색해 보시고 보시면 좋을 것같습니다.

제가 운영하는 투명아이 호스팅에서 JSP 호스팅을 좀더 편하게 구현할 방법을 찾아보니 여기까지 왔습니다.

정말 간단하다 못해 너무 단순하게 강력한 효과를 얻을 수 있는 방법이라고 생각합니다.

우선 보통의 경우 mod_jk를 이용하여 연동을 하게 되는데요, 이때에 볼 수 있는 설정 파일은 대충 다음과 같습니다.

LoadModule          jk_module       modules/mod_jk.so

JkWorkersFile /usr/local/tomcat/conf/workers.properties
JkLogFile /var/log/httpd/mod_jk.log
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories -ForwardLocalAddress
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkRequestLogFormat "%w %V %T"
JkLogLevel info

JkMount             /servlet/*      ajp13
JkMount             /manager/*      ajp13
JkMount             /flex/*         ajp13
JkMount             /*.jsp          ajp13
JkMount             /*.do           ajp13

위의 방법은 Apache 2.2의 ProxyAJP 모듈을 이용한 방법으로 고쳐 보겠습니다. [참고]

다음과 같은 설정 파일을 proxy_ajp.conf 파일로 만들어 Apache의 설정 파일에 Include되도록 합시다.
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

ProxyRequests Off
ProxyVia Block
ProxyMaxForwards 100
ProxyPreserveHost On

ProxyPass /manager/ ajp://localhost:8009/manager/
ProxyPass /servlet/ ajp://localhost:8009/servlet/
ProxyPass /flex/ ajp://localhost:8009/flex/
ProxyPassMatch ^/.*\.(jsp|do)$ ajp://localhost:8009/

# 보안을 위해 WEB-INF 접근 불가설정
<LocationMatch "/WEB-INF">
    deny
from all
</LocationMatch>

# 보안을 위해 META-INF 접근 불가설정
<LocationMatch "/
META-INF">
    deny from all
</LocationMatch>

ProxyPass를 사용하여 특정 디렉토리를 톰캣에서 처리하게 할 수 있습니다.

ProxyPassMatch를 이용하여 특정 확장자를 가진 파일을 톰캣에서 처리하도록 할 수 있습니다. 정규식을 잘 쓰면 되겠네요.

이제는 더이상 worker.properties니 하는 파일이 필요없습니다. 위와 같은 방법으로 간단하게 처리 가능합니다.

WEB-INF나 META-INF 디렉토리로의 접근 보안 문제는 위와같이 해결할 수 있습니다.

위와 같은 설정으로 웹호스팅 환경의 멀티 가상호스트상황에서도 일일이 연동 설정을 할 필요없어졌습니다.

출처 : http://theeye.pe.kr
출처 : http://theeye.pe.kr

아래에 쓴글은 정상적으로 작동하지 않으며 다음의 방법이 보안을 위한 정상적인 방법입니다.
ProxtRequests 설정을 Off로 변경 :
외부 요청이 차단됨, 이후에도 ProxyPass, ProxtPassMatch등 정상 사용 가능


- 기존의 글

기존에 다음과 같은 ProxyAJP를 이용한 Apache2와 Tomcat의 연동법에 대한 글을 썼었습니다.

- Proxy AJP + mod_rewrite를 이용하여 Apache 2.2 + Tomcat 완벽 연동하기
- Apache 2 Proxy AJP를 이용한 호스팅 환경에서의 완벽 연동

하지만 위의 방법들에 중대한 보안 문제가 있다는 것을 알게 되었습니다. 어느 순간부터인가 서버에 엄청난 트래픽이 유입되더군요.

저는 단순히 DDOS공격인줄 알았습니다. IP는 정체를 알수 없이 전세계에서 들어오더군요. 사실상 끝나기를 기다리며 내 서버에는 사실상 영리목적의 사이트가 없는데 무엇이 목적일까 고민하게 되었습니다.

우선 쌓이는 로그가 매우 특이한것을 알수 있었습니다. 로그는 대충 다음과 같은 형식이었습니다.

202.109.175.224 - - [17/Apr/2009:21:17:39 +0900] "GET http://www.dfwater.com/Index.asp HTTP/1.1" 503 28 "http://www.dfwater.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 5.1)"
84.16.227.121 - - [17/Apr/2009:21:17:35 +0900] "GET http://www.google.com/ie?q=puts+inurl:?p%3D&hl=en&num=100&start=200&sa=N HTTP/1.0" 302 335 "http://www.google.com/ie?q=puts+inurl:?p%3D&hl=en&num=100&start=200&sa=N" "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"
64.91.72.166 - - [17/Apr/2009:21:17:39 +0900] "CONNECT 205.188.251.26:443 HTTP/1.0" 200 - "-" "-"
61.160.211.12 - - [17/Apr/2009:21:17:36 +0900] "GET http://www.kiss888mu.cn HTTP/1.1" 500 3847 "http://www.baidu.com" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 5.1)"
118.69.166.3 - - [17/Apr/2009:21:17:39 +0900] "GET http://69.147.112.211/config/isp_verify_user?l=mmg&p=0011 HTTP/1.0" 200 26 "-" "-"
208.70.78.177 - - [17/Apr/2009:21:17:36 +0900] "GET http://www.google.com/ie?as_q=inurl:/guestbook.html+tampa+fl+gay+life+and+dating&num=100&hl=en HTTP/1.0" 302 355 "http://www.google.com/ie?as_q=inurl:/guestbook.html+tampa+fl+gay+life+and+dating&num=100&hl=en" "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8b2) Gecko/20050224 Firefox/1.0+"
78.30.203.105 - - [17/Apr/2009:21:17:39 +0900] "GET http://inmarket73.ru/forum/index.php?s=fb2bade970f814c6d66c67f414a2328b&act=Reg&CODE=image&rc=35f728107e6ae6292a22c4e6f16634ac&p=3 HTTP/1.0" 200 68 "http://inmarket73.ru/forum/index.php?act=Reg&CODE=image&rc=7f430230e31d334872d1b5136a57b9ce&p=1" "Mozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1)"
94.76.199.2 - - [17/Apr/2009:21:17:36 +0900] "GET http://superschurke.de/comments/feed/ HTTP/1.1" 404 809 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"


로그가 좀 지저분 합니다만 형식이 다음과 같다는것만 보시면 됩니다. 요청이 GET 메서드 이후에 http로 시작하는 것을 알수 있습니다. 그것도 전혀 쌩뚱 맞은 도메인과 호스트에 요청을 합니다.

이것이 왜 이상하냐면 보통의 브라우저는 요청을 할때 다음과 같이 합니다. theeye.pe.kr/index.html의 요청이 있다면 DNS에 질의 하여 theeye.pe.kr 도메인의 호스트 IP를 알아낸 이후에 그곳에 접속하여 GET /index.html 과 같은 방법으로 요청을 하게 됩니다.

위와 같은 방법은 마치 여의도에 가서 "롯데월드가 어딧나요?" 라고 물어보는 꼴이 되는 것입니다.

왜 저런 요청이 자꾸 들어오는 것인지 궁금하여 서버에 다음과 같이 테스트를 해보았습니다.

telnet theeye.pe.kr 80
GET http
://www.naver.com

자, 상식적으로 잘못된 요청이라고 나와야 하지만 정상적으로 페이지가 출력됩니다. 아니 왜 내 서버에서 엉뚱한 사이트의 요청을 처리해 주는 것이지!?

이제 여의도에 가서 "롯데월드가 어딧나요?" 라고 물었더니 상대방이 자기 차에 태워 롯데월드에 데려다 주었습니다.

친절한 사람이군요;;; 근데 문제가, 이걸 악용해서 소문이 나서 세상의 모든 사람이 이 친절한 사람에게 와서 자신이 가고싶은 곳이 어딧는지를 물어본다는 것이 문제가 됩니다.

서버가 엉뚱한 요청을 받아 대리 요청후에 결과를 되돌려 주는 문제는 일전의 Proxy설정의 잘못이었습니다.

ProxyAJP설정을 별다른 보안 절차 없이 설정하게 되면 이 세상 모든 http 요청의 IP세탁 시스템으로 둔갑되어질 수 있습니다.

이문제를 해결하기 위해서는 간단하게 Proxy 요청은 로컬호스트에서만 가능하게 설정하시면 됩니다.

<Proxy *>
Order Deny,Allow
Deny from all
Allow from localhost
</Proxy>

간단하게 해결되었죠? Proxy 설정을 하시고 서버를 운영하시는 분들은 다른 호스트로의 요청을 해보시기 바랍니다.

에러없이 요청이 정상처리 된다면, 이제 표적이 되기전에 설정을 조금 손보시기 바랍니다.

첨언 : 추가로 로그들을 쭉 분석해 봤는데, 위와 같은 방법을 사용하는 이유는 특정 사이트의 검색요청을 계속하여 검색랭킹을 올린다거나, 추천사이트의 어뷰징 혹은 사이트 페이지뷰를 높이는데 사용되어지는 듯 싶습니다.

출처 : http://theeye.pe.kr

출처 : http://theeye.pe.kr


블로그 글에 자꾸 반말/존칭이 섞여가는거 같아 껄끄럽긴 하지만 이번에는 존댓말로 써봅니다;;

여러분의 JAVA/JSP는 어떤 WAS에서 돌리고 계신가요? 톰캣을 쓰신다고요?

그럼 웹서버는 아파치를 사용하시겠군요. 연동을 위해 톰캣 사이트에서 받을 수 있는 mod_jk를 많이들 쓰실것입니다.

하지만 아파치 2.2.x에서 제공하는 Proxy AJP를 사용하면 매우 깔끔하게 연동을 할 수 있습니다.

톰캣은 설치가 되어 정상적으로 동작하고 있는 상황이라 가정하고 아파치 설정만을 적어보겠습니다.

[이곳]에서 가장 최신의 아파치 2.2 버젼을 다운받습니다. 압축을 풀고 컴파일을 합니다.

설정(쓰레드 방식)

[root@Theeye src]$ CC="gcc" CFLAGS="-O2" ./configure --prefix=/usr/local/httpd --enable-so --enable-proxy-ajp --enable-cgi --enable-rewrite --enable-speling --enable-usertrack --enable-deflate --enable-ssl --enable-cache --enable-disk-cache --enable-expires --enable-file-cache --enable-headers --enable-mem-cache --enable-mime-magic --enable-proxy --enable-mods-shared=all --with-mpm=worker

설정(프로세스 방식)
[root@Theeye src]$ CC="gcc" CFLAGS="-O2" ./configure --prefix=/usr/local/httpd --enable-so --enable-proxy-ajp --enable-cgi --enable-rewrite --enable-speling --enable-usertrack --enable-deflate --enable-ssl --enable-cache --enable-disk-cache --enable-expires --enable-file-cache --enable-headers --enable-mem-cache --enable-mime-magic --enable-proxy --enable-mods-shared=all --with-mpm=prefork

컴파일
[root@Theeye src]$ make
[root@Theeye src]$ make install


아파치가 설치된 디렉토리의 conf/httpd.conf 파일을 열어 다음의 두가지가 정상적으로 존재하는지 확인합니다.
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule rewrite_module modules/mod_rewrite.so


그리고 마지막쯤에 있는 가상호스팅 관련 설정을 인클루드 하도록 설정합니다.
Include conf/extra/httpd-vhosts.conf


아파치 설치 디렉토리의 conf/extra/httpd-vhost.conf 파일을 열어 가상호스트를 추가합니다.
<VirtualHost *:80>
    ServerAdmin
your@emailhere
    DocumentRoot /var/www/html
    ServerName theeye.pe.kr
    ErrorLog logs/theeye.pe.kr-error_log
    CustomLog logs/theeye.pe.kr-access_log common

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} \.(htm|html|xhtml|js|css|jpg|gif|png|swf)$
    RewriteRule (.*) - [L]
    RewriteRule (.*) ajp://localhost:8009$1 [P]
</VirtualHost>


위 와같은 rewrite를 통한 설정은 htm, html, xhtml, js, css, jpg, gif, png, swf 확장자를 가진 요청은 아파치가 처리하도록 하고 나머지는 톰캣이 처리하도록 합니다. 원하시는 확장자를 마음껏 추가하셔도 됩니다.

톰캣이 설치된 디렉토리의 conf/server.xml의 설정을 변경합니다. Connector설정을 확인합니다.
<Connector port="8009" protocol="AJP/1.3" maxThreads="150" minSpareThreads="25" 
   
maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100"
   
debug="0" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />


아파치 가상호스트에 지정한것과 동일한 호스트를 설정합니다.
<Host name="theeye.pe.kr" debug="0" appBase="/var/www/html" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="/var/www/html" debug="0" reloadable="false" crossContext="true" />
</Host>


자, 이제 아파치와 톰캣의 설정이 모두 끝났습니다. 위와 같이 사용하시면 아파치에서 처리할 파일과 톰캣이 처리할 파일들을 따로 분리할 필요도 없으며 확장자에 따라 정확히 아파치와 톰캣이 분산 처리를 하게 됩니다.

정적인 파일들을 톰캣이 처리할 필요는 없으니깐요^^

추가로 특정 호스트에게만 오픈하는 관리자 페이지거나 개발서버일 경우 다음과 같이 접근 가능 아이피를 지정할 수 있습니다.

<VirtualHost *:80>
    ServerAdmin
your@emailhere
    DocumentRoot /var/www/html
    ServerName theeye.pe.kr
    ErrorLog logs/theeye.pe.kr-error_log
    CustomLog logs/theeye.pe.kr-access_log common

    RewriteEngine On
    RewriteCond !%{REMOTE_ADDR} ^127\.0\.0\.1$
    RewriteRule ^.*$ - [F]
    RewriteCond %{REQUEST_FILENAME} \.(htm|html|xhtml|js|css|jpg|gif|png|swf)$
    RewriteRule (.*) - [L]
    RewriteRule (.*) ajp://localhost:8009$1 [P]
</VirtualHost>



127.0.0.1 아이피를 가진 호스트가 아니라면 아파치에서 바로 에러페이지를 출력하게 됩니다.

위의 방법을 사용할 경우 보안 문제가 있으니 [ProxyAJP를 이용한 Apache2 + Tomcat 연동시 중대한 보안 문제]을 참고하세요

출처 : http://theeye.pe.kr

# kill -9 `ps -ef | grep 프로세스명 | grep -v grep | awk '{ print $2 }'`

 

또는

 

# ps -C httpd --no-heading | awk '{ print $1 }' | xargs -t -i kill -9 {}

 

xargs는 여러 인자를 옵션으로 받아 원하는 명령어를 일일이 수행해 주는 커맨드이다.
위의 경우는 httpd 프로세스를 모두 죽이는 예이다.


+ Recent posts