weblogic.jms.common.TransactionRolledBackException:

Spring JIRA | Jason Norman | 10 years ago
tip
Click on the to mark the solution that helps you, Samebug will learn from it.
As a community member, you’ll be rewarded for you help.
  1. 0

    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"); } }

    Spring JIRA | 10 years ago | Jason Norman
    weblogic.jms.common.TransactionRolledBackException:
  2. 0

    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"); } }

    Spring JIRA | 10 years ago | Jason Norman
    weblogic.jms.common.TransactionRolledBackException:
  3. 0

    question on JMS TransactionRolledBackException

    Google Groups | 1 decade ago | Raj Raheja
    weblogic.jms.common.TransactionRolledBackException:
  4. Speed up your debug routine!

    Automated exception search integrated into your IDE

  5. 0

    Resolved Problems for Service Packs 1 - 6

    oracle.com | 2 months ago
    weblogic.jms.common.TransactionRolledBackException
  6. 0

    Resolved Problems for Service Packs 1 - 6

    oracle.com | 4 days ago
    weblogic.jms.common.TransactionRolledBackException

    Root Cause Analysis

    1. weblogic.jms.common.TransactionRolledBackException

      at weblogic.jms.backend.BEConsumer.expireTimeout()
    2. weblogic.jms.backend
      BEXAResource.rollback
      1. weblogic.jms.backend.BEConsumer.expireTimeout(BEConsumer.java:1769)
      2. weblogic.jms.backend.BEXATranEntryBlockingConsumer.startRollback(BEXATranEntryBlockingConsumer.java:82)
      3. weblogic.jms.backend.BEXAResource.rollback(BEXAResource.java:1267)
      3 frames
    3. weblogic.transaction.internal
      TransactionImpl$1.execute
      1. weblogic.transaction.internal.XAServerResourceInfo.rollback(XAServerResourceInfo.java:1317)
      2. weblogic.transaction.internal.XAServerResourceInfo.rollback(XAServerResourceInfo.java:650)
      3. weblogic.transaction.internal.ServerSCInfo.startRollback(ServerSCInfo.java:729)
      4. weblogic.transaction.internal.ServerTransactionImpl.localRollback(ServerTransactionImpl.java:1829)
      5. weblogic.transaction.internal.ServerTransactionImpl.globalRollback(ServerTransactionImpl.java:2511)
      6. weblogic.transaction.internal.TransactionImpl$1.execute(TransactionImpl.java:1759)
      6 frames
    4. weblogic.kernel
      ExecuteThread.run
      1. weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
      2. weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
      2 frames