2015-06-24 1 views
-1

Запуск сервера Tomcat v8.0 в localhost столкнулся с проблемой.IllegalArgumentException: Сервлеты с именем [Test] и [com.srk.pkg.MyServlet] оба отображаются на url-шаблон [/ MyServlet], который не разрешен

апач не запускается, когда проект web.xml веб-приложения содержит сервлетов информация:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
id="WebApp_ID" version="3.1"> 
<display-name>WebApp-01</display-name> 
<welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>default.html</welcome-file> 
    <welcome-file>default.htm</welcome-file> 
    <welcome-file>default.jsp</welcome-file> 
</welcome-file-list> 

<servlet> 
    <servlet-name>Test</servlet-name> 
    <servlet-class>com.srk.pkg.MyServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Test</servlet-name> 
    <url-pattern>/MyServlet</url-pattern> 
</servlet-mapping> 

</web-app> 

enter image description here

когда сервлет информация удаляется из web.xml, то все в порядке, приложение получает развернутое, браузер открывает ...

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
id="WebApp_ID" version="3.1"> 
<display-name>WebApp-01</display-name> 
<welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>default.html</welcome-file> 
    <welcome-file>default.htm</welcome-file> 
    <welcome-file>default.jsp</welcome-file> 
</welcome-file-list> 
</web-app> 

журнала сервера:

Caused by: java.lang.IllegalArgumentException: The servlets named [Test] and [com.srk.pkg.MyServlet] are both mapped to the url-pattern [/MyServlet] which is not permitted 
    at org.apache.tomcat.util.descriptor.web.WebXml.addServletMapping(WebXml.java:308) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationWebServlet(ContextConfig.java:2325) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2007) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1901) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1896) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1896) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1896) 
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1139) 
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:771) 
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:305) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5095) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    ... 6 more 
+0

У вас есть аннотацию '@ WebServlet' в классе' com.srk.pkg.MyServlet'? –

+0

yes, @WebServlet ("/ MyServlet") Публичный класс MyServlet расширяет HttpServlet {...... он работает, удаляя это. Я не знал эту аннотацию. спасибо в любом случае – Istvan

+0

круто, эта аннотация делает излишнюю спецификацию сервлета в web.xml. http://docs.oracle.com/javaee/6/api/javax/servlet/annotation/WebServlet.html – Istvan

ответ

1

Я думаю, что вы не можете иметь одинаковое отображение сервлетов, определенное дважды: в аннотации и в web.xml.

Когда вы добавляете аннотациюк классу сервлетов, вам не нужно класть его снова в web.xml. Сервлеты с этими аннотациями начинаются автоматически.

-1

Иногда эту проблему можно решить, просто удалив сервер и добавив сервер обратно. Когда вы удаляете сервер, не забывайте, что вам также необходимо удалить «среды выполнения» сервера.

Надеется, что это помогает :)