Tomcat 7:映射无效(java.lang.IllegalArgumentException)

Tomcat 7:映射无效(java.lang.IllegalArgumentException),java,tomcat,servlets,tomcat7,web.xml,Java,Tomcat,Servlets,Tomcat7,Web.xml,我正在将现有项目从Tomcat6迁移到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

我正在将现有项目从Tomcat6迁移到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>

saveArtefactServlet
/储蓄恢复
编辑:


人工制品
/储蓄恢复
这里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>

违约
/*
jsp
*.jsp
*.jspx
我试着玩弄地图,但没有取得任何进展。希望你能帮忙

错误显示:

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

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

java.lang.IllegalArgumentException: The servlets named...
名为[ArtefactServlet]和[saveArtefactServlet]的servlet是 两者都映射到url模式[/saveRestoration],该模式不是 允许的

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

java.lang.IllegalArgumentException: The servlets named...
我在不同的包(name='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>

同步伺服阀
同步伺服阀
同步伺服阀
同步伺服阀
/同步伺服阀
/SynServlet
当我为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>

syncro.SynchronizeServlet
syncro.SynchronizeServlet
syncro.SynchronizeServlet
syncro.SynchronizeServlet
/同步伺服阀
/SynServlet
==>73

我在不同的包(name='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>

同步伺服阀
同步伺服阀
同步伺服阀
同步伺服阀
/同步伺服阀
/SynServlet
当我为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>

syncro.SynchronizeServlet
syncro.SynchronizeServlet
syncro.SynchronizeServlet
syncro.SynchronizeServlet
/同步伺服阀
/SynServlet


==>73

saveArtefactServlet/saveRestoration我认为这是重复的。请检查另一个web.xml文件中是否存在同名的servlet。在we.xml文件中,servlet名称已多次用于不同的url模式。对于tomcat 6来说,这没有问题,这可能是问题吗?一个servlet到多个映射好的,多个servlet到一个映射,不是吗?请显示“ArtefactServlet”的servlet映射。我将其添加到问题saveArtefactServlet/saveRestoration中,我认为这是重复的。请检查另一个web.xml文件中是否存在同名的servlet。在we.xml文件中,servlet名称已多次用于不同的url模式。对于tomcat 6来说,这没有问题,这可能是问题吗?一个servlet到多个映射,好的,多个servlet到一个映射,不好,请您显示“ArtefactServlet”的servlet映射,我将其添加到问题中,我想这必须在servlet本身内更改,包括web.xml中的url模式-正确吗?您的ArtefactServlet是在哪个文件中定义的?您是否可以将ArtefactServlet的模式更改为其他模式?像/artifactServet?我只是搜索了代码,saveArtefactServlet似乎不存在。我会推荐它并试一试,谢谢!编辑:映射指向各种相同的servlet。这可能是我在tomcat 7中不再支持的功能吗?我想这必须在servlet本身中更改,包括web.xml中的url模式-正确吗?您的ArtefactServlet是在哪个文件中定义的?您是否可以将ArtifactServlet的模式更改为其他模式?像/artifactServet?我只是搜索了代码,saveArtefactServlet似乎不存在。我会推荐它并试一试,谢谢!编辑:映射指向各种相同的servlet。这可能是我在Tomcat7中不再支持的特性吗?