Java JMS会话创建失败

Java JMS会话创建失败,java,jms,ejb,hornetq,jboss-eap-7,Java,Jms,Ejb,Hornetq,Jboss Eap 7,在JBOSS EAP 7.3高度事务性应用程序中,当数据负载不断增加时,我们会遇到以下异常 Caused by: javax.ejb.EJBException: javax.jms.JMSException: Could not create a session: IJ000457: Unchecked throwable in managedConnectionReconnected() Caused by: javax.resource.ResourceException: IJ000457

在JBOSS EAP 7.3高度事务性应用程序中,当数据负载不断增加时,我们会遇到以下异常

Caused by: javax.ejb.EJBException: javax.jms.JMSException: Could not create a session: IJ000457: Unchecked throwable in managedConnectionReconnected()
Caused by: javax.resource.ResourceException: IJ000457: Unchecked throwable in managedConnectionReconnected() cl=org.jboss.jca.core.connectionmanager.listener.TxConnectionListener@3915e409[state=NORMAL managed connection=org.hornetq.ra.HornetQRAManagedConnection@7d6bcd06 connection handles=0 lastUse=1494579251303 trackByTx=false pool=org.jboss.jca.core.connectionmanager.pool.strategy.PoolByCri@691085ec mcp=SemaphoreArrayListManagedConnectionPool@66a127f5[pool=HornetQConnectionDefinition] xaResource=XAResourceWrapperImpl@56a9bb4[xaResource=org.hornetq.ra.HornetQRAXAResource@4ca920eb pad=false overrideRmValue=null productName=HornetQ productVersion=2.0 jndiName=java:/JmsXA] txSync=null]
  at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.reconnectManagedConnection(AbstractConnectionManager.java:780)
  at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:518)
  at org.hornetq.ra.HornetQRASessionFactoryImpl.allocateConnection(HornetQRASessionFactoryImpl.java:948)
   ... 261 more
Caused by: javax.resource.ResourceException: IJ000461: Could not enlist in transaction on entering meta-aware object
  at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.managedConnectionReconnected(TxConnectionManagerImpl.java:551)
  at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.reconnectManagedConnection(AbstractConnectionManager.java:775)
   ... 263 more
Caused by: javax.transaction.SystemException: IJ000356: Failed to enlist: java.lang.Throwable: Unabled to enlist resource, see the previous warnings. tx=TransactionImple < ac, BasicAction: 0:ffff0a0001c3:682851c6:5900737b:dd09939 status: ActionStatus.ABORT_ONLY >
  at org.jboss.jca.core.connectionmanager.listener.TxConnectionListener$TransactionSynchronization.checkEnlisted(TxConnectionListener.java:848)
  at org.jboss.jca.core.connectionmanager.listener.TxConnectionListener.enlist(TxConnectionListener.java:383)
  at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.managedConnectionReconnected(TxConnectionManagerImpl.java:544)
   ... 264 more 
原因:javax.ejb.EJBException:javax.jms.JMSException:无法创建会话:IJ000457:在managedConnectionReconnected()中未选中可丢弃
原因:javax.resource.ResourceException:IJ000457:managedConnectionReconnected()cl=org.jboss.jca.core.connectionmanager.listener中未选中的可丢弃项。TxConnectionListener@3915e409[状态=正常托管连接=org.hornetq.ra。HornetQRAManagedConnection@7d6bcd06连接句柄=0 lastUse=1494579251303 trackByTx=false pool=org.jboss.jca.core.connectionmanager.pool.strategy。PoolByCri@691085ec微通道板=SemaphoreArrayListManagedConnectionPool@66a127f5[pool=HornetQConnectionDefinition]xaResource=XAResourceWrapperImpl@56a9bb4[xaResource=org.hornetq.ra。HornetQRAXAResource@4ca920ebpad=false OVERMVALUE=null productName=HornetQ productVersion=2.0 jndiName=java:/JmsXA]txSync=null]
位于org.jboss.jca.core.connectionmanager.AbstractConnectionManager.reconnectManagedConnection(AbstractConnectionManager.java:780)
位于org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:518)
位于org.hornetq.ra.hornetqrasessionfactorympl.allocateConnection(hornetqrasessionfactorympl.java:948)
…还有261个
原因:javax.resource.ResourceException:IJ000461:无法在输入元感知对象时登记到事务中
位于org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.managedConnectionReconnected(TxConnectionManagerImpl.java:551)
位于org.jboss.jca.core.connectionmanager.AbstractConnectionManager.reconnectManagedConnection(AbstractConnectionManager.java:775)
…还有263个
原因:javax.transaction.SystemException:IJ000356:登记失败:java.lang.Throwable:无法登记资源,请参阅前面的警告。tx=TransactionImple
位于org.jboss.jca.core.connectionmanager.listener.TxConnectionListener$TransactionSynchronization.checkEnsted(TxConnectionListener.java:848)
位于org.jboss.jca.core.connectionmanager.listener.TxConnectionListener.enst(TxConnectionListener.java:383)
位于org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.managedConnectionReconnected(TxConnectionManagerImpl.java:544)
…264更多
所有消息都是由EJB使用事务模式XA的池连接工厂发送的,事务中还涉及到一个Oracle XA数据库连接。我们正在注意在一个包含空检查的finally块中关闭所有资源,如连接、会话和生产者,看起来我们没有r电子资源泄漏


什么可能会导致此异常,写入消息日志是否会导致磁盘性能低下?

这很可能是由EJB甚至在尝试获取JMS连接之前的事务超时造成的。超时将事务标记为“仅中止”,这意味着对该事务所做的任何工作都将基本失败

当EJB尝试从JCA托管连接池获取JMS连接时,容器将自动尝试在正在进行(但已中止)的事务中登记该连接。由于事务标记为“仅中止”,因此此操作失败

回顾您的日志,您应该会看到导致事务中止的原因的证据。如果确实是超时,您将看到如下内容:

ARJUNA012095: Abort of action id 0:ffffac10040a:2eba2cc3:53ee68d4:5b013c invoked while multiple threads active within it.

请记住,虽然可以增加事务超时,但默认超时已经是300秒(即5分钟)长时间运行的事务是一种反模式,因此不鼓励使用。

是的,在我的案例中,数据库操作花费了更多的时间,甚至在获得JMS连接之前就导致了事务回滚。感谢您的输入,我非常感谢