2012-10-31
java Framework]윈도우에서 톰캣5.0과 아파치2.0 그리고 jk2 연동하는 방법
<<윈도우에서 톰캣5.0과 아파치2.0 그리고 jk2 연동하는 방법 >>
우선 다음과 같은 S/W가 필요하다.
Apache2.0.45
J2SDK 1.4.1_02 (http://httpd.apache.org/download.cgi에서 apache_2.0.46-win32-x86-no_src.msi를 다운로드 )
Jakarta Tomcat4.1.24 (http://jakarta.apache.org/builds/jakarta-tomcat-4.0 /release/v4.1.24/bin/에서 jakarta-tomcat-4.1.24.exe 또는 jakarta-tomcat-4.1.24-LE-jdk14.exe를 다운로드합니다. J2SDK 1.4가 이미 설치되어 있다면 LE 버전만 받으면 됩니다. 그렇지 않다면 jakarta-tomcat-4.1.24.exe를 다운로드)
mod_jk2 (http://jakarta.apache.org/builds/jakarta-tomcat- connectors/jk2/release/v2.0.2/bin/win32/참고 윈도우용 mod_jk2-2.0.43.dll)
필 요한 소프트웨어를 모두 구했으면 각각을 설치한다. 가급적이면 설치는 J2SDK부터 설치하는 것이 좋다. 그 다음 아파치나 톰켓을 차례대로 설치하면 된다. JK2는 아파치 설치 후, modules 디렉토리에 mod_jk2-2.0.43. dll 파일을 복사하면 된다.
환경 설정
1) JAVA_HOME
JDK가 설치된 디렉토리를 JAVA_HOME 이라는 변수이름으로 환경변수에 추가한다. 바탕화면의 '내 컴퓨터'를 선택하고 팝업메뉴를 띄워 등록정보에 들어간 다음 ‘고급→환경변수’를 선택하면 된다. 모든 사용자에 관계없이 JAVA_HOME이 유효하게 하려면 시스템 변수에, 자신의 계정에만 유효하게 하려면 사용자 변수쪽에 추가하면 된다. 변수명은 JAVA_HOME으로 하고 변수값은 JDK를 설치한 디렉토리를 지정해주면 된다(예. C:\J2SDK_1.4.1_01). BIN 디렉토리까지 설정해주는 것이 아님을 기억하자.
JAVA_HOME 변수의 경우는 TOMCAT에서 JSP 컴파일 등을 할 때 사용할 뿐만 아니라 다른 자바관련 툴들(ANT같은)에서도 이 변수를 사용하므로 어떻든 간에 한번은 지정하는 것이 작업에 도움이 될 것이다.
2) CLASSPATH
TOMCAT 에서는 JSP를 컴파일 할 필요가 있을 때 JAVA_HOME에서 설정된 패스를 기준으로 lib 디렉토리를 뒤지거나 CLASSPATH 환경변수 설정을 참고해서 컴파일에 사용할 패키지인 servlet.jar를 찾는다. 따라서 servlet.jar를 $JAVA_HOME/jre/lib/ext 같은 곳에 넣어주거나 servlet.jar가 포함되어 있는 TOMCAT의 $TOMCAT_HOME/lib 디렉토리에 CLASSPATH 설정을 해주면 된다. 환경변수 설정하는 요령은 앞의 JAVA_HOME의 그것과 동일하다.
3) PATH
자바소스 컴파일에는 javac.exe가 사용되기 때문에, 이를 시스템 어디에서나 사용할 수 있도록 환경변수의 PATH에다가 $JAVA_HOME/bin 디렉토리를 추가해주면 된다. 자바프로그래머라면 대부분 이미 추가해 놓았으리라 생각한다.
4) 아파치 환경설정 - httpd.conf 와 workers2.properties
$APACHE/conf 디렉토리에 있는 httpd.conf 파일을 열고, LoadModule 이라고 되어있는 부분들을 찾아서 적당한 줄에다가 다음과 같이 입력한다.
LoadModule jk2_module modules/mod_jk2-2.0.43.dll
그 후에 DocumentRoot 항목을 찾아서 $TOMCAT_HOME/webapps과 같은식으로 지정해준다.
예) DocumentRoot "c:\Program Files\Apache Group\Tomcat 4.1\webapps"
그리고 아래쪽에 있는 Directory 항목 역시 동일하게 수정해준다.
예) <Directory "C:\Program Files\Apache Group\Tomcat 4.1\webapps">
다 끝냈으면 이번에는 workers2.properties를 편집한다. 이 파일은 기본적으로 아파치에 포함되지 않으므로 conf 폴더 내에서 찾을 수가 없다. 따라서 직접 만들어줘야 하는데 $APACHE_HOME/conf에다가 workers.properties 파일을 만들고 다음의 내용을 복사해넣고 저장하면 된다.
# Define the communication channel
[status:]
[uri:/jkstatus/*]
group=status:
[shm:]disabled=1
[channel.socket:localhost:8009]
info=Ajp13 forwarding over socket
tomcatId=localhost:8009
# Web Applicaton을 설정
[uri:/examples/*]
info=Map the whole webapp
위 에서 언급한 바와 같이 workers2.properties 파일은 $APACHE/conf에 있어야만 아파치가 읽어들일 수 있기 때문에 특히 파일의 경로에 주의해야 한다. ($TOMCAT_HOME/conf 가 아님)
5) 톰캣 환경설정 - jk2.properties 과 server.xml
$TOMCAT_HOME/conf/jk2.properties 파일을 열고 편집하면 되는데 내용을 잘 모른다면 다음의 셋팅예제를 그대로 복사해 써도 무방하다.
## THIS FILE MAY BE OVERRIDEN AT RUNTIME. MAKE SURE TOMCAT IS STOPED
## WHEN YOU EDIT THE FILE.
## COMMENTS WILL BE _LOST_
## DOCUMENTATION OF THE FORMAT IN JkMain javadoc.
# Set the desired handler list
handler.list=apr,channelSocket,request,shm
# Override the default port for the socketChannel
# Set the default port for the channelSocket
channelSocket.port=8009
# Default:
# channelUnix.file=${jkHome}/work/jk2.socket
# Just to check if the the config is working
# shm.file=${jkHome}/work/jk2.shm
# In order to enable jni use any channelJni directive
# channelJni.disabled = 0
# And one of the following directives:
# apr.jniModeSo=/opt/apache2/modules/mod_jk2.so
# If set to inprocess the mod_jk2 will Register natives itself
# This will enable the starting of the Tomcat from mod_jk2
# apr.jniModeSo=inprocess
# Dynamic library
serverRoot= "C:/Program Files/Apache Group/Tomcat/webapps "
완료했으면 이번에는 server.xml을 편집한다. $TOMCAT_HOME/conf/server.xml 파일을 열고 아래의 부분을 찾아 주석처리 하거나 삭제한다. 주석처리는 ‘<!-’로 시작해서 ‘->’로 끝내면 된다. 아래부분은 TOMCAT에 포함되어 있는 Coyote 웹서버에 연결하는 커넥터인데, 여기서는 웹서버로 아파치를 사용할 것이므로 필요없다.
<!--
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8080" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="100" debug="0" connectionTimeout="20000"
useURIValidationHack="false" disableUploadTimeout="true" />
-->
위의 내용이 있는 곳에서 조금 아래쪽을 보면 다음과 같은 부분이 있다. org.apache.coyote.tomcat4.CoyoteConnector라는 이름의 Connector가 mod_jk2로 연결할 때 사용하는 부분으로, 아래쪽의 org.apache.ajp.tomcat4.Ajp13Connector가 mod_jk를 사용할 때 쓰는 부분이므로 mod_jk 부분(아래쪽)을 주석 처리하도록 한다.
<!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8009" minProcessors="5" maxProcessors="150"
enableLookups="true" redirectPort="8443"
acceptCount="10" debug="0" connectionTimeout="20000"
useURIValidationHack="false"
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>
<!-- Define an AJP 1.3 Connector on port 8009 -->
<!--
<Connector className="org.apache.ajp.tomcat4.Ajp13Connector"
port="8009" minProcessors="5" maxProcessors="75"
acceptCount="10" debug="0"/>
-->
서버 구동 확인
톰캣과 아파치를 실행시킨 후 다음의 주소를 입력해 본다.
http://localhost/examples/servlets/index.html
http://localhost/examples/jsp/index.html
제대로 servlet 또는 jsp의 예제 페이지가 나타나고 각 예제들이 올바로 실행된다면 설치가 올바로 이루어진 것이다. 만약 jsp 나 서블릿 파일이 다운로드 된다거나 소스코드가 보인다거나 404 에러 등이 발견되면 어디에선가 셋팅이 잘못된 것이다. 클래스패스의 문제, servlet.jar 패키지의 부재, 잘못된 JDK컴파일러 설치, 설정파일 편집 오류 등 다양한 문제가 있을 수 있다. 아파치의 톰캣의 로그파일과 설치메뉴얼을 보면서 약간의 노력을 더 기울인다면 무난하게 해결 할 수 있을 것이다.
2012-10-23
이클립스에서 톰캣 연결할때 UTFDataFormatException 오류
이클립스에서 톰캣 연결할때
Catalina.start: java.io.UTFDataFormatException: Invalid byte 1 of 1-byte UTF-8 sequence.
java.io.UTFDataFormatException: Invalid byte 1 of 1-byte UTF-8 sequence.
at org.apache.xerces.impl.io.UTF8Reader.invalidByte(Unknown Source)
at org.apache.xerces.impl.io.UTF8Reader.read(Unknown Source)
at org.apache.xerces.impl.XMLEntityScanner.load(Unknown Source)
at org.apache.xerces.impl.XMLEntityScanner.scanLiteral(Unknown Source)
at org.apache.xerces.impl.XMLScanner.scanAttributeValue(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanAttribute(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1543)
at org.apache.catalina.startup.Catalina.start(Catalina.java:449)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)
이런에러가 계속 발생합니다... 어떻게 해야하나여...?
플러그인은 추가시킨 상태에요..
===========================================================================================
server.xml에 한글문자가 주석이든 모든 들어가면 뜨는 에러입니다.
server.xml에 보시면 문자 인코딩이 iso8859-1 이라고 되어있는데 한글이 들어가면서 생기는 현상입니다.
한글 부분을 영어로 바꾸시면 해결됩니다. ㅡㅡ;
Catalina.start: java.io.UTFDataFormatException: Invalid byte 1 of 1-byte UTF-8 sequence.
java.io.UTFDataFormatException: Invalid byte 1 of 1-byte UTF-8 sequence.
at org.apache.xerces.impl.io.UTF8Reader.invalidByte(Unknown Source)
at org.apache.xerces.impl.io.UTF8Reader.read(Unknown Source)
at org.apache.xerces.impl.XMLEntityScanner.load(Unknown Source)
at org.apache.xerces.impl.XMLEntityScanner.scanLiteral(Unknown Source)
at org.apache.xerces.impl.XMLScanner.scanAttributeValue(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanAttribute(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1543)
at org.apache.catalina.startup.Catalina.start(Catalina.java:449)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)
이런에러가 계속 발생합니다... 어떻게 해야하나여...?
플러그인은 추가시킨 상태에요..
===========================================================================================
server.xml에 한글문자가 주석이든 모든 들어가면 뜨는 에러입니다.
server.xml에 보시면 문자 인코딩이 iso8859-1 이라고 되어있는데 한글이 들어가면서 생기는 현상입니다.
한글 부분을 영어로 바꾸시면 해결됩니다. ㅡㅡ;
피드 구독하기:
글 (Atom)