Назад | Перейти на главную страницу

Tomcat 8.5 не может загрузить аннотации @WebServlet

Я хочу перенести свое веб-приложение из tomcat7 / java7 к tomcat 8.5 / java8. Мое приложение состоит из каталога с некоторыми файлами JSP и папкой WEB-INF, которая содержит мои приложения web.xml :

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                          http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
      version="3.1"
      metadata-complete="false">
      ...
</web-app>

& вот часть конфигурации виртуального хоста tomcat:

<Host name="my-domain.ir" appBase="/path/to/my/webapp" >
    <Context path="" docBase="base-dir" 
     xmlValidation="false" xmlNamespaceAware="false" crossContext="false" reloadable="false" >
    ...
    </Context>
    ...
</Host>

Предположим, что я следую реализации сервлета:

@WebServlet(
    name = "MyServlet1",
    urlPatterns = {"/MyServlet1"}
)
@SuppressWarnings("serial")
public class MyServlet1 extends HTTPServlet {
    ...
}

Я сделал отдельный файл jar, который содержит все мои реализации сервлетов, и добавил его в TOMCAT-HOME/lib папка (потому что она используется несколькими виртуальными хостами, и я не хочу загружать ее в память отдельно для каждого виртуального хоста).

Проблема в том, что при запуске tomcat я получаю это сообщение catalina.out:

02 декабря 2016 г. 19: 32: 44.442 FINE [localhost-startStop-1] org.apache.jasper.servlet.TldScanner $ TldScannerCallback.scan Файлы TLD не найдены в [file: / opt / tomcat / lib / MY-SERVLETS -IMPL.jar]. Рассмотрите возможность добавления JAR-файла в свойство tomcat.util.scan.StandardJarScanFilter.jarsToSkip в файле CATALINA_BASE / conf / catalina.properties.

& когда я хочу получить доступ к своему сервлету, используя адрес my-domain.ir/MyServlet1 Я получаю страницу ошибки 404 not found, но если я добавлю отображение сервлета в web.xml вместо использования аннотаций он отлично работает. В обоих случаях мои файлы JSP работают нормально.

Любое предложение?

В conf / context.xml добавьте код ниже, он может работать

<JarScanner scanClassPath="false" />

По умолчанию для scanAllDirectories, scanAllFiles и scanBootstrapClassPath установлено значение false, но для параметра scanClassPath установлено значение true. Так что сделать его ложным может сработать.

Если это не сработает, дайте мне знать.

Также читать этот, это поможет.