【问题标题】:Jboss starts servlets in wrong orderJboss 以错误的顺序启动 servlet
【发布时间】:2017-08-02 08:37:03
【问题描述】:

我正在与 Jboss JBoss EAP 6.4.5.GA (AS 7.5.5.Final-redhat-3) 合作,但我的 web.xml 有问题。 这是我拥有的 web.xml 的一部分:

<servlet>
    <servlet-name>Servlet1</servlet-name>
    <servlet-class>classPath.servlet1</servlet-class>
    <load-on-startup>0</load-on-startup>
</servlet>
<servlet>
    <servlet-name>Servlet2</servlet-name>
    <servlet-class>classPath.servlet2</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

当我启动 JBOSS 服务器时,我看到我的配置没有保留,因为有时 Servlet2 在 Servlet1 之前启动,但这不应该发生。 当我删除数据、tmp 和日志目录然后启动 JBOSS 时,它会在 Servlet2 之前启动 Servlet1,但在 JBOSS 重新启动后,我看到 Servlet2 在 Servlet1 之前运行。

有没有人遇到过这种情况或类似情况并且可以帮助我解决这个问题? Maybye有一个特殊的标签,它可以告诉JBOSS“在Servlet1之后启动Servlet2”而不是'load-on-startup'。

* 编辑 * 我必须添加有关这种情况的有趣信息。在重新启动(删除那些目录)的调试模式下,第一个 init() 方法在 Servlet1 中启动,然后在 Servlet2 中启动,但在 JBOSS 重新启动后,只有 Servlet2 中的 init() 启动,我不知道为什么......

【问题讨论】:

  • 可以使用@WebFilter Annotations 来完成
  • @WebFilter 没有使用 to Filter 而不是 Servlet?
  • 以编程方式可以禁止 servlet2 启动。即通过检查会话变量的存在,如果已设置,则启动 servlet2 部分,因此在执行过程中,认为 servlet2 试图启动,通过检查会话变量条件,流程停止
  • 你怎么知道“但是在 JBOSS 重启后我看到 Servlet2 在 Servlet1 之前运行”? Servlet 本身并不“运行”,它们在初始化后响应传入的请求。
  • 因为我在这些 servlet 中启动方法 init() 时设置了断点,并在启动 jboss 后在我的 IDE 中打开调试,我看到哪个是第一个。正如我之前所说,重新启动后一切正常,但重新启动后就不是了。

标签: java servlets jboss jboss7.x web.xml


【解决方案1】:

也许您可以检查一下"&lt;load-on-startup&gt;0&lt;/load-on-startup&gt;" 的确切含义 在 web.xml 中。

我记得这个属性不仅表示序列,还表示其他东西,尤其是当它为 0 时。

【讨论】:

    猜你喜欢
    • 2017-05-30
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 2014-03-25
    • 1970-01-01
    相关资源
    最近更新 更多