Где я могу поместить файл jar сервлета в Tomcat 6? - PullRequest
2 голосов
/ 01 марта 2011

У меня есть сервлет в jar-файле, который я хочу развернуть в своем экземпляре Tomcat 6.Я сделал следующие вещи:

  1. добавил объявление сервлета в мой корень web.xml
  2. добавил отображение сервлета в корень web.xml
  3. поместил мойфайл jar в / tomcat / lib
  4. перезапустил мой сервер

Я получаю следующую ошибку, когда направляю свой сервлет

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.Итак, вопрос в том ... где я могу поместить файл jar сервлета в Tomcat 6, чтобы он был подхвачен в CLASSPATH?

TIA

Ответы [ 2 ]

3 голосов
/ 01 марта 2011

Ваши JAR-файлы сервлета находятся в каталоге WAR lib, а не в каталоге Tomcat lib верхнего уровня, т.е.

<war-root>
   /WEB-INF
      web.xml
   /lib
      myservlet.jar
1 голос
/ 02 марта 2011

Хотя это не нормальная практика, она должна работать нормально. Поскольку теоретически это должно работать, я протестировал его локально, и он отлично работает (Tomcat 6.0.20 и 7.0.5). Вы, вероятно, опечатка в <servlet-class>. Имя класса вашего сервлета начинается со строчной буквы, что полностью противоречит соглашениям об именах Java . Попробуйте

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

вместо.

Если это не помогло, распакуйте JAR с помощью какого-либо инструмента ZIP / RAR и проверьте, присутствует ли файл com/mypackage/MyServlet.class.

Если файл действительно присутствует, то вы, вероятно, используете некоторую IDE, которая имеет только определенное подмножество банок Tomcat/lib в копии Tomcat, которая контролируется / управляется IDE. Попробуйте развернуть и запустить Tomcat в командной консоли.

...