当前位置: 首页 > 面试题库 >

此错误的原因是什么java.lang.IllegalStateException:尝试返回未知的connection2?

赵俊晤
2023-03-14
问题内容

我在运行我的应用程序时遇到了此类错误。它偶尔会发生,所以我不知道此错误产生于我的代码中的确切原因。该异常不会告诉任何明确的细节。

一段堆栈跟踪。

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。


问题答案:

在JBoss
Wiki中
对此进行了回答。这里是相关的:

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

如果您使用这种模式或框架,则可以关闭此消息(请参阅下文),但是在检测连接泄漏时您将自己决定。从3.2.6开始,在CachedConnectionManager上有一个“
listInUseConnections()” 。

但是,此已知问题与某些事务划分语义有关。这实际上不是JBoss的用途,更多的是ThreadLocal模式绕过J2EE语义。

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

要删除CachedConnectionInterceptor,请编辑conf /
standardjboss.xml并删除对拦截器的所有引用。这些看起来像:

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

org.jboss.resource.connectionmanager.CachedConnectionInterceptor

Hibernate3提供了其他机制来管理会话(和连接),因此很容易避免此问题。



 类似资料:
  • PHP手册说,如果锁定成功,调用flock将返回TRUE,否则返回FALSE。若文件被其他进程阻塞,那个么flock应该等到它被解锁(因为我们不使用LOCK_NB)。文档中没有超时,超时会中断等待,所以显然flock将无限等待,直到获得锁为止。 但是有时我在我的多线程脚本中从flock()得到FALSE。那是什么原因呢?

  • 为什么代码获取不到API返回的数据? API是免费版本, 每分钟限制45次请求,使用POST请求方式, URL中的fields=58898是返回指定字段. 我在API的网站查询IP没有问题, 但是代码中一直返回空值, requests也没有报错, 所以现在有点不知道从哪里下手了, 请大佬们帮我分析一下, 或者给点思路! 跪谢!

  • 为什么delete请求后一直报错400 代码都没问题 一直找不到出错的原因

  • 问题内容: 嗯,我已经找了很多地方在互联网上的原因,其称 无法更新存储函数/触发器中的表“ unlucky_table”,因为调用该存储函数/触发器的语句已使用该表 有人说这是mysql中的错误或它没有提供的功能。 MySQL触发器无法操纵分配给它们的表。所有其他主要的DBMS都支持此功能,因此希望MySQL会尽快添加此支持。 有人声称这是由于当您插入一条记录时递归行为 mysql正在做一些锁定操

  • 我对编程很陌生,我已经自学了将近一个月了,有谁能给我解释一下我代码中错误的原因吗?在“Total(moneyConv(moneySum*moneyRate))”中出错。行,表示实际和形式的论点在长度上是不同的。我检查了我所有的参数,我觉得很好。多谢!

  • 我有一个wordpress博客。当我登录到仪表板时,以下异常在顶部突出显示: 从异常消息中,我可以推断它与谷歌分析及其API有关 然而,我很想知道是什么导致了这个异常。此外,我可以采取哪些措施来避免此类例外情况?