焊接和EntityManagerFactory容器管理

时间:2014-11-19 13:23:32

标签: hibernate jpa cdi wildfly emf

我需要知道如何确保容器关闭EMF(使用wildfly 8.0和hibernate-jpa)。

每次取消部署我的应用程序时,WeldJpaInjectionServices $ EntityManagerResourceReferenceFactory的实例都会保留在持有EMF实例的内存中。

在某些部署/取消部署之后,这会导致OOM异常。

我没有在我的代码中使用EMF引用,只使用带有@Produces和@PersistenceContext注释的EntityManager。

它发生在wildfly 8.0,8.1和9.0alpha上,带有java 7和8。

1 个答案:

答案 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