gpt4 book ai didi

java - webapp中有多个servlet时如何处理初始化失败

转载 作者:行者123 更新时间:2023-11-29 03:03:08 26 4
gpt4 key购买 nike

我的特定设置是在 Tomcat7 下打包为 war 文件的 Java webapp,但问题更为笼统。在我们的 webapp 中,我们通过 Servlet 3.x @WebServlet 注释注册了多个 servlet(并且还标记为 loadOnStartup=1)。问题是,如果其中一个 servlet 在初始化过程中由于某种合理原因而失败并抛出异常,该怎么办。在这种情况下,我们看到两个问题:

  1. Tomcat 注意到 servlet 失败。但是我们的服务不断被负载均衡器探测,试图决定是否将我们包含在池中。每个探测都是对映射到失败的 servlet 的 URL 的访问。 Tomcat 不断尝试并重试初始化 web 应用程序,但每次都失败。有没有办法让 Tomcat 停止尝试并放弃?我们可以监控初始化失败并在需要时采取纠正措施。

  2. 同一个 webapp 中的其他 servlet 没有失败(它们也是通过带有 loadOnStartup=1 的 WebServlet 注释加载的)。因此,如果我们尝试通过点击适当的 URL 来访问它们,Tomcat 会让我们通过。如果 webapp 中一个 servlet 的失败会导致整个 webapp 失败,我们会更愿意这样做。

最佳答案

您可以将所有失败的启动操作放在一个 ServletContextListener 中,它在任何 servlet 之前被初始化。如果 ServletContextListener 的初始化失败,则不会部署整个 webapp。

然后您的 servlet 可以在它们的初始化中简单地向单例 ServletContextListener 询问它们已经初始化的资源。

关于java - webapp中有多个servlet时如何处理初始化失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33633948/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com