japanese site
온라인강좌책메일다운로드동아리쇼핑기술지원기업정보갤러리동영상 블로그
『신개념 4단계 리눅스기술지원 시스템 공개』

※ 『무료 리눅스 배포판 배송서비스』 ※

※ 게시판 용도에 맞지 않는 글(광고및 홍보 글 등)은 임의삭제될 수 있습니다.

 
작성일 : 06-07-20 11:25
[질문] 아파치 + 톰캣 연동시 사용자 계정에서 서블릿이 동작하지 않습니다.
 글쓴이 : BombBang
조회 : 3,037  

안녕하십니까?

아무리 검색해 가면서 해결을 해보려 해도 해결이 되지 않아 질문을 올리게 되었습니다.

리눅스 사용자 계정에서 *.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 연동은 잘 되는데, 서블릿만 돌아가질 않고 있습니다. 명쾌한 해법 좀 주시면 감사드립니다. ㅠㅠ


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기

 
   
 


『신개념 4단계 리눅스기술지원 시스템 공개』

CentOS 리눅스 전문서적 국내최초출시

 
회사소개 | 보도기사 | 채용안내 | 광고안내 | 이용약관 | 개인정보취급방침 | 책임한계와 법적고지 | 불편사항 신고하기 | 사이트맵
ㅇ 서울 : 서울특별시 강남구 노현로79길 66, 402호(역삼동,청송빌딩)  ㅇ 부산 : 부산광역시 해운대구 우동 1470 에이스하이테크21 914호
ㅇ 대표 : 1544-8128 ㅇ부산직통 : 051-744-0077 ㅇ서울직통 : 02-856-0055 ㅇ FAX : 02-6280-2663
ㅇ 사업자번호 : 128-86-68239 ㅇ 통신판매업 신고번호 : 2013-부산금정-0035호 ㅇ 개인정보책임자 : 이재석
ㅇ 상호명 : (주) 수퍼유저 ㅇ 대표자 : 박성수
Copyright ⓒ (주)수퍼유저. All rights reserved.

 아 이 디
 비밀번호
회원 가입 | 비밀번호 찾기

블로그~
 
▷ 질문과 답변
리눅스
서버해킹/보안
네트워크
아파치
메일서버
DNS
PHP
JSP
MySQL
큐브리드
Oracle
MRTG
SMS
Weblog
Domain
S/W
하드웨어
책제목
리눅스서버관리실무바이블v3.0


저자 박성수
페이지수 2,032 pages
펴낸곳(주)수퍼유저

리눅스 서버 구축 및 관리에 필요한 거의 모든 부분과 전반적인 실무 기법들을 다루고 있음
책제목
리눅스보안관리실무(2/E)


저자홍석범
페이지수 820 pages
펴낸곳(주)수퍼유저

리눅스 보안에 관련된 내용을 종합적으로 쓴 책. 저자의 명성 그대로 보안관련의 모든 내용이 그대로 담겨져 있다.