Apache Tomcat


    bin / service.bat 을 사용하여 윈도우 서비스에 등록한다. 꼭 할필요는 없다.    


마지막줄을 보면 has been installed. 라고 나오지 않는가?

아파치 톰캣 (Apache Tomcat) 설치는 service.bat install 이걸로 끝이다.

작업 관리의 서비스에서 Apache Tomcat 을 찾아 시작해주면 시작이다.

제거하기 위해서는 service.bat uninstall 한다.


아래는 설정하기.


    conf / server.xml 파일을 아래 처럼 추가 및 수정해 준다.    

  

<Service name="homepage">

  <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="utf-8"/>
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

    <Engine name="Catalina" defaultHost="localhost">

        <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/></Realm>

        <Host name="localhost"  appBase="path" unpackWARs="true" autoDeploy="true">
            <Context path="" docBase="directory" reloadable="true"></Context> 없으므로 추가해야함.
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                prefix="localhost_access_log." suffix=".txt"
                pattern="%h %l %u %t &quot;%r&quot; %s %b" />
        </Host>
    </Engine>
</Service> 

 

- 위 내용을 하나더 만들어 Service namePort 를 다르게하면 두개의 웹서버를 사용할 수 있다.

- URIEncoding="utf-8" 부분이 없으면 request.getParameter("aaa") 에서 한글을 제대로 받을 수 없다.

- appBase 위치에 docBase 로 설정한 directory 를 만들어야 한다. 만약, docBase 를 "." 처럼 현재 path 로 설정하게 되면 jsp 의 include 지시자에서 항상 '/' 위치에서 파일을 찾는 문제가 발생하여 파일을 찾을 수 없다는 에러 메시지가 나온다.

- conf / web.xml 파일을 보면 index.html, index.htm index.jsp 즉, 시작 파일을 지정할 수 있다.
- JDK 는 선택사항이 아니며 필수적으로 설치를 해야 한다. 환경 변수를 설정해 주므로써 마무리.

- Java compile 을 하려면 apache-tomcat\lib\servlet-api.jar 파일을 jdk\jre\lib\ext 에 복사한다.
- 개발 도중 cache 로 인해 수정한 page 가 바로 열리지 않는다면 익스플로러에서 인터넷옵션 > 일반 탭 > 검색기록 아래의 "설정" 버튼 클릭 > "페이지를 열 때마다" 선택 하면 된다.

 

    아이피가 IPv4 가 아닌 IPv6 으로 인식될 경우 해결 방법    

 

bin Directory 의 tomcat7w.exe 을 실행시키면 다음과 같은 화면이 나온다.

JavaOptions 에서 -Djava.net.preferIPv4Stack=true 을 추가 시킨다.

 

 


소스에서 System.setProperties ( "java.net.preferIPv4Stack" , "true") ; 하면 된다고 하던데 확인해보지 못했다.

해결되지 않을 경우 로컬 영역 연결 속성에서 다음과 같이 IPv6 을 해제 후 리부팅한다.

추가로 시간(TimeZone)을 변경하기 위해서는 -Duser.timezone=Asia/Seoul 을 추가해준다. 소스에서 변경하기 위해서는 System.setProperty ( "user.timezone", "GMT+09:00" ) ; 하면 된다.




 

    도메인으로 구별하여 사이트를 여러개 운영하는 방법    

 

<!--
 Client 에서 아이피로 들어 오기 때문에 기본을 서버 고정 아이피로 설정하였다.
 알고보니 localhost 로 해도 할당 받은 서버 고정 아이피로 동작하기에 localhost 로 하였다.
 단일 서버인 관계로 도메인으로도 들어와야 하기에 Alias 로 연결 시켜 주었다.

 한글 도메인을 설정할 경우 tomcat 에서 적용이 안되므로 퓨니코드로 설정해 주어야 한다.
 Chrome 주소창에 한글 도메인 그대로 입력하고 엔터. 그리고 그대로 복사하면 퓨니코드로 복사된다.

 도메인주소  x n - - h q 1 b m 8 j o u g i r g p 3 b
 테스트 x n - - 9 t 4 b 1 1 y i 5 a


 주석을 쓰는데 하이픈(-) 두개가 연속으로 있어서 tomcat 이 실행 오류 발생으로 전부 한칸씩 띄어 주었다.
-->

 <Engine name="localhost">

 <!-- #################################################################################### -->

 <Host name="DOMAINADDRESS.co.kr" appBase="C:\경로" unpackWARs="true" autoDeploy="true">
 <Context path="" docBase="폴더" reloadable="true" debug="0"></Context>
 <Alias>www.DOMAINADDRESS.co.kr</Alias> <!-- www 또한 2 차 이기 때문에 있어야 한다. -->
 <Alias>www.xn--hq1bm8jougirgp3b.com</Alias>
 <Alias>원하는 도메인 주소 추가</Alias>
 <Alias>원하는 도메인 주소 추가</Alias>
 <Alias>원하는 도메인 주소 추가</Alias>
 <Alias>원하는 도메인 주소 추가</Alias>
 <Alias>???.???.???.???</Alias> <!-- 프로그램에서 아이피로 들어오기 때문에 꼭!! 있어야 한다. -->
 </Host>

 <!-- #################################################################################### -->

 <Host name="TEST.co.kr" appBase="C:\경로" unpackWARs="true" autoDeploy="true">
 <Context path="" docBase="폴더" reloadable="true" debug="0"></Context>
 <Alias>www.TEST.co.kr</Alias> <!-- www 또한 2 차 이기 때문에 있어야 한다. -->
 <Alias>xn--9t4b11yi5a.com</Alias>
 <Alias>www.xn--9t4b11yi5a.com</Alias>
 <Alias>원하는 도메인 주소 추가</Alias>
 <Alias>원하는 도메인 주소 추가</Alias>
 <Alias>원하는 도메인 주소 추가</Alias>
 <Alias>원하는 도메인 주소 추가</Alias>
 <!-- 아이피는 한개이고 위에서 했기 때문에 이곳에선 하지 않는다. -->
 </Host>

 </Engine>

 

 

    jsp 작성 방법    

 

- 파일은 UTF-8 형식으로 저장 및 사용해야한다.

- <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
- POST 전송시 한글이 깨져 나오기 때문에 request.setCharacterEncoding ( "utf-8" ) ; 한번 해주어야 한다.

- jsp 내부에서는 변수를 공유하는 듯 보인다. 그러므로 synchronized (this) { } 으로 묶어 준다.

- 메일을 보내려면 http://www.java.net/ 에서 JavaMail 을 다운 받아 javax.mail.jar 파일을 lib 에 복사한다.

PostgrSQL 을 사용하려면 http://jdbc.postgresql.org/ 에서 JDBC Driver 를 다운로드 받아 lib 에 넣어준다.

MultipartRequest (첨부 파일)을 하려면 http://servlets.com/ 의 좌측 메뉴 com.oreilly.servlet 에 가면 cos-26Dec2008.zip 을  다운로드 받아 cos.jar 파일을 lib 에 넣어준다.


- euc-kr 에서 utf-8 로 전송시 <form name="form_name" accept-charset="utf-8"> 을 해주고

if ( document.form_name != undefined )

{

if ( document.all ) document.charset = "utf-8" ; // 익스플로러에서는 이렇게 해줘야 됩니다. (버그성 이라고 하네여) 안해주면 receive page(UTF-8)에서 한글이 깨지게 된다.

document.form_name.submit ( ) ;

if ( document.all ) document.charset = 'euc-kr' ; // 폼 전송을 새창으로 했을경우 기존 문자셋으로 되돌려 놓기 위한 처리입니다.

    }


위와같이 charset 을 변경해주고 submit 을 해주어야 한다.