gpt4 book ai didi

spring - 加载tomcat jndi(全局资源)后,如何使spring servlet在启动时等待

转载 作者:行者123 更新时间:2023-11-28 22:50:54 25 4
gpt4 key购买 nike

我有一个使用 load-on-startup = 1 调用的 Spring servlet,它需要数据库连接,但有时连接为空,appLoader servlet 失败。连接为空,因为 tomcat 没有时间正确加载全局资源。

问题:如何让 Spring 等待 jndi 正确加载?我的意思是,以某种方式订购它。

肮脏的解决方案:在调用我的 appLoader 之前创建另一个具有主动等待和等待工作连接的 servlet...

最佳答案

1) <load-on-startup>的工作就是在部署的时候启动一个servlet。它只是启动(starts)进程,之后它无法控制该 servlet。

启动的servlet 的全部控制权都在web container 的手中。 .
Web 容器的行为可以使用事件处理机制以编程方式控制。

2) 事件基本上是某事的发生。更改对象的状态称为事件。
2.1) 你可以处理web container的事件使用 servlet 的事件监听器,并在部署项目时执行一些重要任务,例如创建数据库表、创建数据库连接对象等。
javax.servlet里面有很多Event类和Listener接口(interface)和 javax.servlet.http包。

您可以使用 ServletContextListener存储 connection object在上下文属性中,然后从 servlet 上下文中获取该连接对象。

这里有几个例子,其中数据库连接对象存储在 servlet 上下文中。 example1 example2 example3

2.2) 可以使用spring框架的事件处理机制
在 Spring ,您可以使用 ContextStartedEvent 轮询数据库连接。当 ApplicationContext 时引发开始。
这里有一些 Spring events以例子。

关于spring - 加载tomcat jndi(全局资源)后,如何使spring servlet在启动时等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39854893/

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