RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
Tomcat의 버전이 올라가면서 보안상의 이유로 기본적으로는 서블릿을 실행하 
지 못하도록 설정이 되어있다. 


그래서 다음과 같이 설정해 주면 Tomcat에서 서블릿을 실행할 수 있다. 
   

톰캣은 환경설정과 관련된 내용을 web.xml 파일에 담고 있다. 톰캣을 설치한  
디렉터리의 conf 디렉터리에 있는 web.xml 파일을 수정함으로써 톰캣을 실행하 
는데 필요한 환경설정 정보를 변경할 수 있다.  


□ 톰캣의 환경설정 파일  
◇ %CATALINA_HOME%\conf\web.xml  

web.xml 파일에서 서블릿을 실행할 수 있도록 서블릿의 접근 방법을 지정해 줌 
으로써 서블릿 서비스를 제공할 수 있다.  

서블릿을 실행하기 위한 환경설정 파일을 수정해 보자. 다음의 위치에 설정되어 있는 주석을 해제하면 된다.  

□ web.xml 파일의 변경  
◇ 99번째 ~ 109번째 줄 주석 해제  
    <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> 
◇ 348번째 ~ 351번째 줄 주석 해제  

    <servlet-mapping> 
        <servlet-name>invoker</servlet-name> 
        <url-pattern>/servlet/*</url-pattern> 
    </servlet-mapping> 

□ XML 문서의 주석문 기호  
◇ 주석문의 시작 : <!--  
◇ 주석문의 끝 : -->  

위의 위치에 설정되어 있는 주석 기호를 삭제하면 서블릿을 실행할 수 있다. 

그런데 Tomcat 6.0에서는 위와 같이 주석을 풀고 실행해도 Tomcat 시작시 다음과 같은 Exception이 발생한다. 

java.lang.SecurityException: Servlet of class org.apache.catalina.servlets.InvokerServlet is privileged and cannot be 
 loaded by this web application 
 at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1134) 
 at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981) 
 at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4045) 
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4351) 
 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) 
 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) 
 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525) 
 at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920) 
 at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883) 
 at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492) 
 at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138) 
 at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) 
 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) 
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) 
 at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) 
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) 
 at org.apache.catalina.core.StandardService.start(StandardService.java:516) 
 at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
 at org.apache.catalina.startup.Catalina.start(Catalina.java:566) 
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
 at java.lang.reflect.Method.invoke(Unknown Source) 
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) 
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 


톰캣 6.x 버전부터는 다음과 같이 서블릿 리로딩에 관련된 추가적인 설정을 해 주어야 한다. 

Tomcat 설치 디렉터리의 conf/context.xml 파일을 열고, 
<Context> 태그를 다음과 같이 수정한다. 

<Context reloadable="true" privileged="true"> 

그러면 Tomcat 시작 시 에러가 발생하지 않으며, 서블릿도 정상적으로 실행된다. 


----------------------------------------------------------------- 
4. Turn on Servlet Reloading 
The next step is to tell Tomcat to check the modification dates of the 
 class files of requested servlets, and reload ones that have changed  
since they were loaded into the server's memory. This slightly degrades  
performance in deployment situations, so is turned off by default.  
However, if you fail to turn it on for your development server, you'll  
have to restart the server every time you recompile a servlet that has  
already been loaded into the server's memory. Since this tutorial  
discusses the use of Tomcat for development, this change is strongly  
recommended. 


To turn on servlet reloading, edit Edit install_dir/conf/context.xml and change 

  <Context> 
    to 

  <Context reloadable="true" privileged="true"> 

    Note that the privileged entry is really to support the invoker  
servlet (see the following section), so you can omit that entry if you  
do not use the invoker. 
이올린에 북마크하기
2008/06/17 16:45 2008/06/17 16:45
http://jiny.kr/trackback/333
from.닥공  2009/01/08 22:41
서블릿을 처음 시작시HelloServlet.java를 실행시 나오는 에러 Servlet of class org.apache.catalina.servlets.InvokerServlet is privileged and cannot be loaded by this web application 이 에러로 고생을 했다.내가 사용한 톰켓 버전은 apache-tomcat-6.0.18JDK 1.6.0_11 이다.&lt;catalina_home>/conf/에...
from.창의력과 상상력을 넘어서  2009/03/07 10:42
JSP 공부를 시작할때 환경 설정이 잘 안되서 기본 servlet 소스도 실행이 안됐다. 까먹어서 또 막 찾아보기 전에 적어나야지 나는 주로 이클립스에서 톰캣을 사용할 것이기때문에... 톰캣 깔려있는 디렉토리를 이클립스 -윈도우-preference-server-runtime Environment 에서 고쳐주고...시작해야지 톰캣은 환경변수 이런거랑 servlet이 보안상의 문제로 바로 실행이 안되기 때문에 약간의 설정을 해주어야 한다. 1. 환경변수..
전체 (406)
지니소식 (4)
자료실 (4)
정보|뉴스 (5)
SmartPhone (1)
Languages (206)
Server (153)
Database (27)
Design (4)
Gallery (0)
분류하기귀찬.. (2)
«   2012/02   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      
  1. 창의력과 상상력을 넘어서  2009
    Tomcat 6.0 기본 환경 설정
  2. 닥공  2009
    서블릿 tomcat 6.0 실행시 에러
  1. 2010/07 (1)
  2. 2010/05 (1)
  3. 2010/02 (3)
  4. 2010/01 (3)
  5. 2009/05 (2)
Statistics Graph