2011-03-01 4 views
2

Tomcat 6 인스턴스에 배포하려는 jar 파일에 서블릿이 있습니다. 나는 다음과 같은 일을했다 : Tomcat 6에 서블릿 jar 파일을 어디에 두어야하나요?

  1. 이/바람둥이 내 jar 파일을 넣어 루트의 web.xml에 서블릿 매핑을 추가 내 루트의 web.xml에 서블릿 선언을 추가/lib에
  2. 나는 다음과 같은 오류를 얻고있다

내가 내 서블릿에 직접 때 내 서버를 다시 시작

javax.servlet.ServletException: Wrapper cannot find servlet class com.mypackage.myServlet or a class it depends on 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852) 
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
    java.lang.Thread.run(Unknown Source) 

root cause 

java.lang.ClassNotFoundException: com.mypackage.myServlet 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516) 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852) 
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
    java.lang.Thread.run(Unknown Source) 

이것은 내 web.xml이 올바르게 구성되었고 올바른 URL 패턴을 성공적으로 사용하고 있다고 나에게 말합니다. 그래서 문제는 ... Tomcat 6에 서블릿 jar 파일을 어디에 두어 CLASSPATH에서 선택 했는가? 이것은 정상적인 연습 아니지만

TIA

+1

@Bozho, 토론에 더 적극적으로 참여 하시겠습니까? 당신의 대답은 어디에 있습니까? – Simon

답변

1

즉,하지 최상위 톰캣 lib 디렉토리에 전쟁의 lib 디렉토리에 간다, 그것은 잘 작동합니다 . 왜냐하면 이론적으로 작동해야하기 때문에 로컬에서 테스트 했으므로 Tomcat 6.0.20 및 7.0.5가 정상적으로 작동합니다. <servlet-class>에 오타가있을 수 있습니다. 서블릿의 클래스 이름은 소문자로 시작하며 이는 Java naming conventions과 완전히 일치합니다. 시도해보십시오

<servlet-class>com.mypackage.MyServlet</servlet-class> 

대신에보십시오.

그래도 문제가 해결되지 않으면 JAR 파일을 ZIP/RAR 도구로 압축을 풀고 com/mypackage/MyServlet.class 파일이 있는지 확인하십시오.

파일이 실제로있는 경우, IDE가 제어/관리하는 Tomcat 복사본에 Tomcat/lib의 jar 파일 중 특정 하위 세트 만있는 IDE를 사용하고있을 가능성이 큽니다. 명령 콘솔에서 Tomcat을 독립 실행 형으로 배포 및 실행하십시오.

+0

감사합니다. 다시 확인하겠습니다. 익명 성을 위해 실제 패키지 이름을 보호했지만 쉽게 오타를 만들 수있었습니다. – Simon

+0

이것은 나를 올바른 곳으로 인도했다. 이것은 위에서 설명한대로 작동합니다. lib 폴더에 서블릿 항아리를 넣고 루트 web.xml을 직접 구성 할 수 있습니다. 내가 가진 문제는 철자가 아니라 서버에 캐싱하는 문제였습니다. 캐시 된 모든 리소스를 열심히 청소하고 시작하여 구성이 정상적으로 작동했습니다. 내 IDE (Eclipse Helios)는 완전히 완전하게 청소되지 않았고, 나는 스스로해야했다 (tomcat 폴더 아래의 작업 디렉토리). 이제 잘 작동합니다. – Simon

+0

반갑습니다. – BalusC

2

서블릿 JAR 파일이

<war-root> 
    /WEB-INF 
     web.xml 
    /lib 
     myservlet.jar 
+0

그래서 jar 파일로 서블릿을 배포 할 수 없습니까? 기본 JSP 서블릿은 어떻게 작동합니까? 왜 내가 그럴 수 없어? – Simon

관련 문제