weblogic.jms.common.TransactionRolledBackException

There are no available Samebug tips for this exception. Do you have an idea how to solve this issue? A short tip would help users who saw this issue last week.

  • JMS seems to be working properly, but a weblogic.jms.common.TransactionRolledBackException is thrown repeatedly, based on the value of the Weblogic connection factory timeout parameter. If the parameter is set to 60 seconds, we see the following stack trace every 60 seconds. ERROR|2007-06-14 08:47:59|DefaultMessageListenerContainer102|Setup of JMS message listener invoker failed - trying to recover weblogic.jms.common.TransactionRolledBackException: at weblogic.jms.backend.BEConsumer.expireTimeout(BEConsumer.java:1769) at weblogic.jms.backend.BEXATranEntryBlockingConsumer.startRollback(BEXATranEntryBlockingConsumer.java:82) at weblogic.jms.backend.BEXAResource.rollback(BEXAResource.java:1267) at weblogic.transaction.internal.XAServerResourceInfo.rollback(XAServerResourceInfo.java:1317) at weblogic.transaction.internal.XAServerResourceInfo.rollback(XAServerResourceInfo.java:650) at weblogic.transaction.internal.ServerSCInfo.startRollback(ServerSCInfo.java:729) at weblogic.transaction.internal.ServerTransactionImpl.localRollback(ServerTransactionImpl.java:1829) at weblogic.transaction.internal.ServerTransactionImpl.globalRollback(ServerTransactionImpl.java:2511) at weblogic.transaction.internal.TransactionImpl$1.execute(TransactionImpl.java:1759) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178) INFO |2007-06-14 08:47:59|DefaultMessageListenerContainer102|Successfully refreshed JMS Connection We have the following as our Spring config: <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:myhealthcommon.properties</value> <value>classpath:myhealthweb.properties</value> <value>classpath:myhealthadmin.properties</value> </list> </property> </bean> <!-- this is the Message Driven POJO (MDP) --> <bean id="messageListener" class="vanderbilt.myhealth.common.util.jms.JmsMessageListener"> <property name="auditUrl"> <value>${url.auditService}</value> </property> </bean> <!-- and this is the message listener container --> <bean id="listenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer102"> <property name="concurrentConsumers" value="1" /> <property name="connectionFactory" ref="jmsQueueConnectionFactory" /> <property name="destination" ref="destination" /> <property name="messageListener" ref="messageListener" /> <property name="sessionTransacted" value="true" /> <property name="receiveTimeout"> <value>-1</value> </property> </bean> <bean id="destination" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>MyHealthQueue</value> </property> </bean> <bean id="jmsQueueTemplate" class="org.springframework.jms.core.JmsTemplate102"> <property name="connectionFactory"> <ref bean="jmsQueueConnectionFactory" /> </property> <property name="defaultDestination"> <ref bean="destination" /> </property> <property name="pubSubDomain"> <value>false</value> </property> <property name="receiveTimeout"> <value>20000</value> </property> </bean> <!-- JMS Queue Connection Factory --> <bean id="jmsQueueConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>MyHealthJmsConnectionFactory</value> </property> </bean> <bean id="jmsPublisherRef" class="vanderbilt.myhealth.common.util.jms.JmsPublisher"> <property name="jmsTemplate"> <ref bean="jmsQueueTemplate" /> </property> </bean> </beans> And the following as our Java code. public void onMessage(Message message, Session session) { if (message instanceof ObjectMessage) { try { AuditEvent event = (AuditEvent)((ObjectMessage)message).getObject(); getHttpClient().getPostResponse(event.toXml()); session.commit(); } catch (Exception ex) { logger.error("Unable to post event to audit service", ex); try { session.rollback(); } catch (JMSException e) { logger.error("Unable to rollback", e); } } } else { throw new IllegalArgumentException("Message must be of type TextMessage"); } }
    via by Jason Norman,
  • JMS seems to be working properly, but a weblogic.jms.common.TransactionRolledBackException is thrown repeatedly, based on the value of the Weblogic connection factory timeout parameter. If the parameter is set to 60 seconds, we see the following stack trace every 60 seconds. ERROR|2007-06-14 08:47:59|DefaultMessageListenerContainer102|Setup of JMS message listener invoker failed - trying to recover weblogic.jms.common.TransactionRolledBackException: at weblogic.jms.backend.BEConsumer.expireTimeout(BEConsumer.java:1769) at weblogic.jms.backend.BEXATranEntryBlockingConsumer.startRollback(BEXATranEntryBlockingConsumer.java:82) at weblogic.jms.backend.BEXAResource.rollback(BEXAResource.java:1267) at weblogic.transaction.internal.XAServerResourceInfo.rollback(XAServerResourceInfo.java:1317) at weblogic.transaction.internal.XAServerResourceInfo.rollback(XAServerResourceInfo.java:650) at weblogic.transaction.internal.ServerSCInfo.startRollback(ServerSCInfo.java:729) at weblogic.transaction.internal.ServerTransactionImpl.localRollback(ServerTransactionImpl.java:1829) at weblogic.transaction.internal.ServerTransactionImpl.globalRollback(ServerTransactionImpl.java:2511) at weblogic.transaction.internal.TransactionImpl$1.execute(TransactionImpl.java:1759) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178) INFO |2007-06-14 08:47:59|DefaultMessageListenerContainer102|Successfully refreshed JMS Connection We have the following as our Spring config: <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:myhealthcommon.properties</value> <value>classpath:myhealthweb.properties</value> <value>classpath:myhealthadmin.properties</value> </list> </property> </bean> <!-- this is the Message Driven POJO (MDP) --> <bean id="messageListener" class="vanderbilt.myhealth.common.util.jms.JmsMessageListener"> <property name="auditUrl"> <value>${url.auditService}</value> </property> </bean> <!-- and this is the message listener container --> <bean id="listenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer102"> <property name="concurrentConsumers" value="1" /> <property name="connectionFactory" ref="jmsQueueConnectionFactory" /> <property name="destination" ref="destination" /> <property name="messageListener" ref="messageListener" /> <property name="sessionTransacted" value="true" /> <property name="receiveTimeout"> <value>-1</value> </property> </bean> <bean id="destination" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>MyHealthQueue</value> </property> </bean> <bean id="jmsQueueTemplate" class="org.springframework.jms.core.JmsTemplate102"> <property name="connectionFactory"> <ref bean="jmsQueueConnectionFactory" /> </property> <property name="defaultDestination"> <ref bean="destination" /> </property> <property name="pubSubDomain"> <value>false</value> </property> <property name="receiveTimeout"> <value>20000</value> </property> </bean> <!-- JMS Queue Connection Factory --> <bean id="jmsQueueConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>MyHealthJmsConnectionFactory</value> </property> </bean> <bean id="jmsPublisherRef" class="vanderbilt.myhealth.common.util.jms.JmsPublisher"> <property name="jmsTemplate"> <ref bean="jmsQueueTemplate" /> </property> </bean> </beans> And the following as our Java code. public void onMessage(Message message, Session session) { if (message instanceof ObjectMessage) { try { AuditEvent event = (AuditEvent)((ObjectMessage)message).getObject(); getHttpClient().getPostResponse(event.toXml()); session.commit(); } catch (Exception ex) { logger.error("Unable to post event to audit service", ex); try { session.rollback(); } catch (JMSException e) { logger.error("Unable to rollback", e); } } } else { throw new IllegalArgumentException("Message must be of type TextMessage"); } }
    via by Jason Norman,
  • Resolved Problems for Service Packs 1 - 6
    via by Unknown author,
  • Resolved Problems for Service Packs 1 - 6
    via by Unknown author,
    • weblogic.jms.common.TransactionRolledBackException: at weblogic.jms.backend.BEConsumer.expireTimeout(BEConsumer.java:1769) at weblogic.jms.backend.BEXATranEntryBlockingConsumer.startRollback(BEXATranEntryBlockingConsumer.java:82) at weblogic.jms.backend.BEXAResource.rollback(BEXAResource.java:1267) at weblogic.transaction.internal.XAServerResourceInfo.rollback(XAServerResourceInfo.java:1317) at weblogic.transaction.internal.XAServerResourceInfo.rollback(XAServerResourceInfo.java:650) at weblogic.transaction.internal.ServerSCInfo.startRollback(ServerSCInfo.java:729) at weblogic.transaction.internal.ServerTransactionImpl.localRollback(ServerTransactionImpl.java:1829) at weblogic.transaction.internal.ServerTransactionImpl.globalRollback(ServerTransactionImpl.java:2511) at weblogic.transaction.internal.TransactionImpl$1.execute(TransactionImpl.java:1759) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
    No Bugmate found.