【问题标题】:Clarify my servlet mapping error in web.xml澄清我在 web.xml 中的 servlet 映射错误
【发布时间】:2018-04-15 10:04:58
【问题描述】:

谁能告诉我这个 web.xml servlet 映射有什么问题?

当我在 tomcat 中部署应用程序时,它给出了 404 错误代码。在我为 AdminUserManagerServlet 制作了一个新的 servlet 映射之后,我想到了它的到来。有人可以告诉我这里有什么错误吗? 当有过滤器映射和侦听器时,是否有适当的方法来添加多个 servlet 映射? 有人可以告诉我错误以及如何解决吗? 非常感谢!

<display-name>Travelocity.COM</display-name>


<servlet>
    <servlet-name>ForwardingServlet</servlet-name>
    <servlet-class>org.test.com.sso.agent.ForwardingServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet>
    <servlet-name>AdminUserManagerServlet</servlet-name>
    <servlet-class>org.test.com.sso.agent.AdminUserStoreManager</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>ForwardingServlet</servlet-name>
    <url-pattern>/samlsso</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>ForwardingServlet</servlet-name>
    <url-pattern>/openid</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>ForwardingServlet</servlet-name>
    <url-pattern>/token</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>ForwardingServlet</servlet-name>
    <url-pattern>/logout</url-pattern>
</servlet-mapping>

 <servlet-mapping>
    <servlet-name>AdminUserManagerServlet</servlet-name>
    <url-pattern>/rolesubmit</url-pattern>
</servlet-mapping>

<filter>
    <filter-name>SSOAgentSampleFilter</filter-name>
    <filter-class>org.test.com.sso.agent.SSOAgentSampleFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>SSOAgentSampleFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>SSOAgentSampleFilter</filter-name>
    <url-pattern>/samlsso</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>SSOAgentSampleFilter</filter-name>
    <url-pattern>/openid</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>SSOAgentSampleFilter</filter-name>
    <url-pattern>/token</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>SSOAgentSampleFilter</filter-name>
    <url-pattern>/logout</url-pattern>
</filter-mapping>

<listener>
    <listener-class>org.test.com.sso.agent.SampleContextEventListener</listener-class>
</listener>

<listener>
    <listener-class>org.testi.com.identity.sso.agent.saml.SSOAgentHttpSessionListener</listener-class>
</listener>


<error-page>
    <exception-type>org.tesi.com.identity.sso.agent.SSOAgentException</exception-type>
    <location>/errors.jsp</location>
</error-page>

【问题讨论】:

  • 哪些 URL 会导致 404 ? /openid 还能用吗?另请查看CATALINA_HOME/logs 中的日志文件。错误日志文件中的内容是什么?
  • travelocity.com/index.jsp 给出 404。检查了它给出相同 404 的日志文件
  • 您为什么希望travelocity.com 理解您的代码?这很不清楚。
  • 您的意思是 Travelocity.com 应该理解什么?这是一个运行良好的示例。我唯一做的就是添加一个额外的 servlet 映射
  • 尝试清理我们的项目或重建war文件并部署在tomcat上,我希望这对你有用

标签: xml tomcat servlets web.xml


【解决方案1】:

您的两个 servlet 都将&lt;load-on-startup&gt; 属性设置为 1。假设该值表示 servlet 的启动顺序。我建议你将一个设置为 0,另一个设置为 1

【讨论】:

  • 嗨 notyetanerd,我检查了更改它。但它仍然给出 404。
  • 确保您没有在 AdminUserManagerServlet 类中使用注释声明相同的映射。 AdminUserManagerServlet 类位置是否正确,.java 文件应位于 /classes/ 下的正确包路径中。 CATALINA 日志能告诉你什么有意义的事情吗?
  • 对不起,没有。可以有任意数量的具有相同load-on-startup 值的servlet。当多个 servlet 具有相同的值时,则允许容器选择顺序。查看更多详情here
猜你喜欢
  • 2015-03-01
  • 2013-01-20
  • 2012-04-17
  • 1970-01-01
  • 2013-09-24
  • 2012-07-23
  • 2016-07-05
  • 2012-01-02
相关资源
最近更新 更多