3

我们一直在讨论在使用 Spring Integration 进行处理时关闭 tomcat。

我们想知道 Spring(Spring 集成)是否默认处理入站通道上正在进行的所有消息,然后才告诉 Tomcat 它已准备好关闭?

我的预感是 Spring 容器将释放所有可用资源,包括在告诉 Tomcat 准备关闭之前阻止处理通道上的任何新资源。不过只是一个想法,我需要做一些研究。我们是否需要添加一些内容以确保最好使用 Tomcat 进行关机?

研究:到目前为止,似乎存在类似“一劳永逸”outbound channel adapter的东西,所以inbound channels可能包括相同的东西。

4

2 回答 2

5

您还可以对 spring bean 使用 destroy-method="cleanUp"。您可以在销毁 bean 之前从此方法中清除所有资源。

于 2013-08-29T13:10:50.917 回答
3

不; 当您停止 Tomcat 时,应用程序上下文被拆除,并且 Spring Integration 没有任何控制权。

我们在 2.2 中引入了新的有序关闭功能,使用 JMX 操作允许停止所有活动组件(轮询器、JMS 侦听器容器等),然后等待一段时间让消息静默。一些端点(例如 http 入站)知道这种状态,并且不会允许新请求进入,同时保持活动状态以处理活动线程。

这不是一个完美的解决方案,但它涵盖了绝大多数用例。

于 2013-08-29T13:03:23.850 回答