weblogic.jms.common.TransactionRolledBackException:

Spring JIRA | Jason Norman | 9 years ago
  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 | 9 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 | 9 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 weeks ago
    weblogic.jms.common.TransactionRolledBackException
  6. 0

    Resolved Problems for Service Packs 1 - 6

    oracle.com | 1 month ago
    weblogic.jms.common.TransactionRolledBackException

    Not finding the right solution?
    Take a tour to get the most out of Samebug.

    Tired of useless tips?

    Automated exception search integrated into your IDE

    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