Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 此错误的原因是什么java.lang.IllegalStateException:试图返回未知连接2?_Hibernate_Jboss - Fatal编程技术网

Hibernate 此错误的原因是什么java.lang.IllegalStateException:试图返回未知连接2?

Hibernate 此错误的原因是什么java.lang.IllegalStateException:试图返回未知连接2?,hibernate,jboss,Hibernate,Jboss,我在运行应用程序时遇到这种错误。 它偶尔会发生,所以我不知道这个错误到底是从我的代码中产生的。 例外情况没有说明任何明确的细节 一块堆叠的痕迹 java.lang.IllegalStateException: Trying to return an unknown connection2! org.jboss.resource.adapter.jdbc.jdk6.WrappedConnectionJDK6@c74ff1 at org.jboss.resource.connectionma

我在运行应用程序时遇到这种错误。 它偶尔会发生,所以我不知道这个错误到底是从我的代码中产生的。 例外情况没有说明任何明确的细节

一块堆叠的痕迹

java.lang.IllegalStateException: Trying to return an unknown connection2! org.jboss.resource.adapter.jdbc.jdk6.WrappedConnectionJDK6@c74ff1
    at org.jboss.resource.connectionmanager.CachedConnectionManager.unregisterConnection(CachedConnectionManager.java:330)
    at org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener.connectionClosed(TxConnectionManager.java:720)
    at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.closeHandle(BaseWrapperManagedConnection.java:362)
    at org.jboss.resource.adapter.jdbc.WrappedConnection.close(WrappedConnection.java:155)
    at org.hibernate.connection.DatasourceConnectionProvider.closeConnection(DatasourceConnectionProvider.java:97)
以前有没有人犯过这个错误,请帮忙。 我正在使用jboss 6、seam 2、jsf 2和richfaces 3。

这在中得到了回答。这里有一个相关的例子:

许多持久性框架(Hibernate2/OBJ)“随机”打开和关闭连接。就JBoss而言,它看起来像是一个ejb分配了连接,而另一个ejb关闭了连接。连接关闭检查不理解此行为。它期望分配连接的同一个ejb也关闭它

如果您使用这样的模式或框架,您可以关闭此消息(请参见下文),但在检测连接泄漏时,您只能依靠自己。从3.2.6开始,屏幕上有一个“listInUseConnections()”

然而,在某些事务划分语义中存在这种情况。这并不是真正的JBoss使用,更多的是ThreadLocal模式绕过J2EE语义

如果您确实遇到了这个问题,那么从conf/standardjboss.xml中的拦截器堆栈中删除CachedConnectionInterceptor将解决虚假消息的问题。特别是对于Hibernate2,这是安全的,因为只要终端用户事务正确,您至少可以信任hibernate正确地关闭连接

要删除CachedConnectionInterceptor,请编辑conf/standardjboss.xml并删除对该interceptor的所有引用。这些将类似于:

<container-configuration>
  <container-name>Standard Stateless SessionBean</container-name>
  <call-logging>false</call-logging>
  <invoker-proxy-binding-name>stateless-http-invoker</invoker-proxy-binding-name>
  <container-interceptors>
    ...
    <interceptor>org.jboss.resource.connectionmanager.CachedConnectionInterceptor</interceptor>

标准无状态SessionBean
假的
无状态http调用程序
...
org.jboss.resource.connectionmanager.CachedConnectionInterceptor
Hibernate3提供了管理会话(和连接)的功能,因此很容易避免这个问题


我正在使用新发布的WF 21,但在我的日志中仍然看到了这一点:
IJ000311:Throwable from unregister connection:java.lang.IllegalStateException:IJ000152:试图返回未知连接:org.jboss.jca.adapters.jdbc.jdk8.WrappedConnectionJDK8
我们的堆栈是Java8、JSF和eclipseselink。在我们的应用程序中,我们只使用CMT。没有BMT。这就是为什么我们感到困惑。调用堆栈是:JSF->Controller->Stateless EJB(带有
@TransactionAttribute(TransactionAttributeType.REQUIRED)
)->DAO(带有
@TransactionAttribute(TransactionAttributeType.mandable)
)@Soner:答案是,代码中的某些内容正在泄漏连接。您有2个选项:修复连接泄漏或关闭邮件。谢谢您的反馈。有趣的是,这个日志发生在从JBoss迁移到WF20之后。在wf21中仍然存在。WF中的事务划分处理是否会发生变化??