【发布时间】: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