Spring integration Tomcat在关机时抱怨spring集成内存泄漏
我在关闭tomcat时遇到以下错误 严重:web应用程序[/TestService]似乎已启动名为[SimpleAsyncTaskExecutor-3]的线程,但未能停止该线程。这很可能会造成内存泄漏Spring integration Tomcat在关机时抱怨spring集成内存泄漏,spring-integration,Spring Integration,我在关闭tomcat时遇到以下错误 严重:web应用程序[/TestService]似乎已启动名为[SimpleAsyncTaskExecutor-3]的线程,但未能停止该线程。这很可能会造成内存泄漏 公共接口测试网关{ 未来执行(请求); } 一些想法 如果你不在乎结果,就返回void 您如何实例化应用程序上下文?如果使用普通的SpringWeb,spring应该注意关闭上下文;如果你是自己创建的,就由你来关闭它 进行线程转储以查看线程正在执行的操作 编辑: public interfac
公共接口测试网关{
未来执行(请求);
}
一些想法
如果你不在乎结果,就返回void
您如何实例化应用程序上下文?如果使用普通的SpringWeb,spring应该注意关闭上下文;如果你是自己创建的,就由你来关闭它
进行线程转储以查看线程正在执行的操作
编辑:
public interface TestGateway {
void execute(Request request);
}
<bean id="requestChannelTaskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor" >
<property name="corePoolSize" value="10" />
<property name="daemon" value="false"/>
</bean>
<int:channel id="requestChannel">
<int:dispatcher task-executor="requestChannelTaskExecutor"/>
</int:channel>
如果您的流从未返回回复,则网关中的TE将被卡住,等待回复
所以,;返回void
就不会有问题。一些想法
如果你不在乎结果,就返回void
您如何实例化应用程序上下文?如果使用普通的SpringWeb,spring应该注意关闭上下文;如果你是自己创建的,就由你来关闭它
进行线程转储以查看线程正在执行的操作
编辑:
public interface TestGateway {
void execute(Request request);
}
<bean id="requestChannelTaskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor" >
<property name="corePoolSize" value="10" />
<property name="daemon" value="false"/>
</bean>
<int:channel id="requestChannel">
<int:dispatcher task-executor="requestChannelTaskExecutor"/>
</int:channel>
如果您的流从未返回回复,则网关中的TE将被卡住,等待回复
所以,;返回void
,您就不会有问题。除了Gary的答案和您的问题:要立即从单向网关返回并异步处理下游流,您应该将网关的请求通道
设置为执行通道
或队列通道
,并且不要担心timeout.1)我尝试使方法无效,将requestChannel与任务执行器关联(用于处理多个同时请求),但即使如此,线程也没有释放。3) 我使用什么进行线程转储,您有什么建议吗?请显示您的配置(编辑问题)。如果没有Future
返回类型,网关内的任务执行者将不会获得任何任务。最后,您还可以向网关添加reply timeout=“0”
,以便,它不会等待答复。除了Gary的回答和您的问题:要从单向网关立即返回并异步处理下游流,您应该将网关的请求通道
设置为执行通道或队列通道,并且不要担心超时。1)我尝试了这个方法void,将requestChannel与任务执行器关联(用于处理多个同时请求)——但即使这样,线程也没有被释放。3) 我使用什么进行线程转储,您有什么建议吗?请显示您的配置(编辑问题)。如果没有Future
返回类型,网关内的任务执行者将不会获得任何任务。最后,您还可以向网关添加reply timeout=“0”
,这样它也不会等待回复。