【问题标题】:Java EE servlet error - duplicate URL patternJava EE servlet 错误 - 重复的 URL 模式
【发布时间】:2018-02-13 03:42:22
【问题描述】:

我正在为我的一项任务制作一个原型银行应用程序。我已经成功地创建了持久性 API、EJB 和所有必需的表。但是,当我为我的应用程序创建 WebClient 并将其与企业应用程序集成并尝试运行它时,我收到以下错误:

java.lang.IllegalArgumentException: Servlet [RegistrationPortImpl] 和 Servlet [RegistrationRequesterPortImpl] 具有相同的 url 模式

WebClient 上只有默认的 index.xhtml 文件,我还没有将它集成到托管 bean。

我只是想在我取得任何进展之前检查我的应用程序是否会在与企业应用程序集成后运行。

【问题讨论】:

  • 您是否向这些 servlet 添加了任何 url 模式?
  • 我没有创建任何 serverlet,它只是使用 JSF。经过更多研究后,发现一个博客通过在 web.xml 文件中添加以下行实际上解决了这个问题。 metadata-complete="true" 但是,我不知道为什么这可以解决问题。

标签: servlets jakarta-ee ejb webclient managed-bean


【解决方案1】:

@WebServlet 中放置一个唯一的url 路径,例如@WebServlet("/port") @WebServlet("/requestport")

像这样注释每个 servlet,然后我相信这个问题不会发生。

【讨论】:

  • 我没有创建任何servlet,它只是使用JSF。经过更多研究后,发现一个博客通过在 web.xml 文件中添加以下行实际上解决了这个问题。 metadata-complete="true" 但是,我不知道为什么这可以解决问题。
  • 好吧好吧。可能为项目配置了两个运行时,并添加了重复的库。
  • 这可能有正确的理解stackoverflow.com/a/9820775/578855
  • 您能否详细说明两次运行时间的含义?我对这种类型的编程很陌生。如何检查是否配置了两个运行时?
【解决方案2】:

您可以像这样在web-app 标签中添加条目metadata-complete=true

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"
  metadata-complete="true">

这个post 提出了类似的建议。 此条目禁用了对 /WEB-INF/lib 中 Servlet 3.0 特定注释和 Web 片段的扫描。请参阅hereherehere

也许您可以检查 web.xml 中的 URL 模式以及您的应用使用哪些库。

【讨论】:

    猜你喜欢
    • 2011-08-10
    • 2015-09-30
    • 2010-09-09
    • 2015-09-01
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    相关资源
    最近更新 更多