我需要知道如何确保容器关闭EMF(使用wildfly 8.0和hibernate-jpa)。
每次取消部署我的应用程序时,WeldJpaInjectionServices $ EntityManagerResourceReferenceFactory的实例都会保留在持有EMF实例的内存中。
在某些部署/取消部署之后,这会导致OOM异常。
我没有在我的代码中使用EMF引用,只使用带有@Produces和@PersistenceContext注释的EntityManager。
它发生在wildfly 8.0,8.1和9.0alpha上,带有java 7和8。
答案 0 :(得分:1)
泄漏与Undertow的保持活动和读取超时属性有关。
在Wildfly(8.2)的新版本中,我们可以定义这些属性:
<subsystem xmlns="urn:jboss:domain:undertow:1.2">
<buffer-cache name="default"/>
<server name="default-server">
<http-listener name="default" socket-binding="http" tcp-keep-alive="true" read-timeout="30000"/>
设置完成后,部署/取消部署不再发生泄漏。
ISSUE:WFLY-3536 - Wildfly 8.1.0 Final keeps established connections forever