[질문] 아파치 + 톰캣 연동시 사용자 계정에서 서블릿이 동작하지 않습니다.
작성자 정보
- BombBang 작성
- 작성일
컨텐츠 정보
- 4,582 조회
- 0 추천
- 목록
본문
안녕하십니까?
아무리 검색해 가면서 해결을 해보려 해도 해결이 되지 않아 질문을 올리게 되었습니다.
리눅스 사용자 계정에서 *.jsp는 잘 돌아가는데, servlet이 돌아가지 않아서 도움을 구하고자 질문을 올립니다. 예를 들면, http://hostip/~userid/servlet/ServletName 또는 http://hostip/~userid/testDir/servlet/ServletName 등으로 접근해서 서블릿을 돌려 보고자 하는데 잘 안되는군요.
환경은 Apache 2.0.55 + Tomcat 5.5.17 + mod_jk 1.2.15 + J2SDK 1.5.0_07 이며 설정을 다음과 같이 하였습니다.
### httpd.conf ###
...
LoadModule jk_module modules/mod_jk.so
# Where to find workers.properties
JkWorkersFile conf/workers.properties
# Where to put jk logs
JkLogFile logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel debug
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
# Send JSPs for context /jsp-examples to worker named default
JkMount /jsp-examples/*.jsp worker1
# Send servlets-examples to worker named default
JkMount /servlets-examples/* worker1
JkAutoAlias /usr/local/apache-tomcat-5.5.17/webapps
JkMount /*.jsp worker1
JkMount /servlet/* worker1
JkUnMount /*.gif worker1
JkUnMount /*.jpg worker1
JkUnMount /*.bmp worker1
JkUnMount /*.jpeg worker1
...
Alias /jsp-examples "/usr/local/tomcat/webapps/jsp-examples/"
<Directory "/usr/local/tomcat/webapps/jsp-examples">
Options FollowSymLinks
AllowOverride None
Allow from all
</Directory>
<Directory "/usr/local/tomcat/webapps/jsp-examples/WEB-INF">
AllowOverride None
deny from all
</Directory>
Alias /servlets-examples "/usr/local/tomcat/webapps/servlets-examples/"
<Directory "/usr/local/tomcat/webapps/servlets-examples">
Options FollowSymLinks
AllowOverride None
Allow from all
</Directory>
<Directory "/usr/local/tomcat/webapps/servlets-examples/WEB-INF">
AllowOverride None
deny from all
</Directory>
### web.xml ###
...
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
...
<servlet>
<servlet-name>invoker</servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
...
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
...
<!-- The mapping for the default servlet -->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- The mapping for the invoker servlet -->
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
<!-- The mapping for the JSP servlet -->
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>
...
<security-constraint>
<display-name>Default Servlet</display-name>
<!-- Disable direct alls on the Default Servlet -->
<web-resource-collection>
<web-resource-name>Disallowed Location</web-resource-name>
<url-pattern>/servlet/org.apache.catalina.servlets.DefaultServlet/*</url-pattern>
<http-method>DELETE</http-method>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>PUT</http-method>
</web-resource-collection>
<auth-constraint>
<role-name></role-name>
</auth-constraint>
</security-constraint>
### server.xml ###
...
<Connector port="8009"
enableLookups="false" redirectPort="8443" protocol="AJP/1.3"
URIEncoding="EUC-KR"/>
...
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
...
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Listener className="org.apache.catalina.startup.UserConfig"
directoryName="public_html"
userClass="org.apache.catalina.startup.PasswdUserDatabase" />
...
### workers.properties ###
workers.apache_log=/usr/local/apache/logs
workers.catalina_home=/usr/local/apache-tomcat-5.5.17
workers.java_home=/usr/java/jdk1.5.0_07
ps=/
worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.lbfactor=1
worker.worker1.cachesize=10
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=60
그리고, 서블릿 *.class 파일은은 계정내 public_html 안에 WEB-INF/classes 디렉토리에 넣고 WEB-INF 디렉토리에는 별도로 web.xml 파일을 생성해서 다음의 내용도 추가해 보았습니다.
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/servlet/HelloServlet</url-pattern>
</servlet-mapping>
</web-app>
사용자 계정에서 JSP랑 JDBC 연동은 잘 되는데, 서블릿만 돌아가질 않고 있습니다. 명쾌한 해법 좀 주시면 감사드립니다. ㅠㅠ
관련자료
-
이전
-
다음