1

我正在将现有项目从 Tomcat 6 迁移到 7。启动时,我遇到此记录的错误消息:

Jul 02, 2013 2:38:39 PM org.apache.catalina.startup.ContextConfig parseWebXml
SEVERE: Parse error in application web.xml file at jndi:/localhost/padd/WEB-INF/web.xml
org.xml.sax.SAXParseException; systemId: jndi:/localhost/padd/WEB-INF/web.xml; lineNumber: 309; columnNumber: 21; Error at (309, 21) : The servlets named [ArtefactServlet] and [saveArtefactServlet] are both mapped to the url-pattern [/saveRestoration] which is not permitted
    at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2687)
    ...
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalArgumentException: The servlets named [ArtefactServlet] and [saveArtefactServlet] are both mapped to the url-pattern [/saveRestoration] which is not permitted

这里是WEB-INF/web.xml行 309fff:

  <servlet-mapping>
    <servlet-name>saveArtefactServlet</servlet-name>
    <url-pattern>/saveRestoration</url-pattern>
  </servlet-mapping>

编辑:

  <servlet-mapping>
    <servlet-name>ArtefactServlet</servlet-name>
    <url-pattern>/saveRestoration</url-pattern>
  </servlet-mapping>

这里tomcat 的 web.xml

<servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

    <!-- The mappings for the JSP servlet -->
    <servlet-mapping>
        <servlet-name>jsp</servlet-name>
        <url-pattern>*.jsp</url-pattern>
        <url-pattern>*.jspx</url-pattern>
    </servlet-mapping>

我试图玩弄映射,但无法取得任何进展。希望你能帮忙!

4

2 回答 2

4

错误说:

名为 [ArtefactServlet] 和 [saveArtefactServlet] 的 servlet 都映射到不允许的 url 模式 [/saveRestoration]

因此,当您的 url 模式匹配时,tomcat 不知道要调用哪个 servlet。为这两个 servlet ArtefactServletsaveArtefactServlet提供不同的 url 模式

于 2013-07-02T13:04:11.953 回答
0
java.lang.IllegalArgumentException: The servlets named...

我在不同的包(名称='syncro')中创建新的servlet时获取了这个原因。我的 servlet 位于syncro.SynchronizeServlet 当我在部署描述符(web.xml)中添加有关此 servlet 的信息时,我发现错误:IllegalArgumentException

不正确的描述符部分示例:

<servlet>
    <description></description>
    <display-name>SynchronizeServlet</display-name>
    <servlet-name>SynchronizeServlet</servlet-name>
    <servlet-class>SynchronizeServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>SynchronizeServlet</servlet-name>
    <url-pattern>/SynchronizeServlet</url-pattern>
    <url-pattern>/SynServlet</url-pattern>
  </servlet-mapping>

当我为 servlet 添加正确的路径时 - 错误消失了。正确描述如下:

<servlet>
    <description></description>
    <display-name>syncro.SynchronizeServlet</display-name>
    <servlet-name>syncro.SynchronizeServlet</servlet-name>
    <servlet-class>syncro.SynchronizeServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>syncro.SynchronizeServlet</servlet-name>
    <url-pattern>/SynchronizeServlet</url-pattern>
    <url-pattern>/SynServlet</url-pattern>
  </servlet-mapping>

==> 73!

于 2015-05-01T18:01:57.650 回答