톰켓6 처음 설치시 할일

2010. 4. 2. 21:4999. 정리전 - IT/14. Tomcat6 자료


400error 해결
tomcat 6.x 구동 후 http://localhost:8080 에 들어가려고 하면 HTTP 400 error 를 뱉으며 들어가지지 않는다.
tomcat 로그를 보면 다음과 같은 에러가 출력되어 있다.
심각: Error deploying web application directory ROOT
java.lang.SecurityException: Servlet of class org.apache.catalina.servlets.InvokerServlet is privileged and cannot be loaded by this web application

톰캣 6.x 버전부터는 org.apache.catalina.servlets.InvokerServlet 클래스가 독점적 클래스로 바꿔어서 그렇단다.
해결법
Tomcat 설치 디렉터리의 conf/context.xml 파일을 열고,<Context> 태그를 다음과 같이 수정한다.

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

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

서블릿 설정

conf/web.xml파일을 열고 invoker와 서블릿 관련 주석을 풀어준다.


개삽질 호스트 해결
아파치의 버추얼호스트 처럼 Tomcat도 따라쟁이

../conf/server.xml

      <Host name="www.xxx.com"  appBase="D:/YYY/xxx.com"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      </Host>
      <Host name="xxxx.com"  appBase="D:/YYY/xxx.com"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      </Host>
실제디렉토리
(Tomcat6에서는 아래와 같이 ROOT라는 글자가 필요하다. ROOT를 쓰고싶지 않아서 찾던중
 상기의 예제에서 host태그 안에 context태그를 지정하면 된다는 다른 글을 보고 개삽질 실컷했다.
 결과 400에러만 연발)

D:
  -YYY
          -xxx.com
                        -docs
                        -src
                        -ROOT
                                  -css
                                  -img
                                  -jsp
                                  -WEB-INF
                                               -web.xml


인용 및 참고사이트
http://pitp.tistory.com/3
http://dbdb.tistory.com/rss