Я хочу перенести свое веб-приложение из 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. Так что сделать его ложным может сработать.
Если это не сработает, дайте мне знать.
Также читать этот, это поможет.