|
|
|
@ -711,9 +711,14 @@ public abstract class AbstractMessageListenerContainer |
|
|
|
* @throws javax.jms.JMSException in case of a rollback error |
|
|
|
* @throws javax.jms.JMSException in case of a rollback error |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
protected void rollbackIfNecessary(Session session) throws JMSException { |
|
|
|
protected void rollbackIfNecessary(Session session) throws JMSException { |
|
|
|
if (session.getTransacted() && isSessionLocallyTransacted(session)) { |
|
|
|
if (session.getTransacted()) { |
|
|
|
// Transacted session created by this container -> rollback.
|
|
|
|
if (isSessionLocallyTransacted(session)) { |
|
|
|
JmsUtils.rollbackIfNecessary(session); |
|
|
|
// Transacted session created by this container -> rollback.
|
|
|
|
|
|
|
|
JmsUtils.rollbackIfNecessary(session); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else { |
|
|
|
|
|
|
|
session.recover(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -725,12 +730,17 @@ public abstract class AbstractMessageListenerContainer |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
protected void rollbackOnExceptionIfNecessary(Session session, Throwable ex) throws JMSException { |
|
|
|
protected void rollbackOnExceptionIfNecessary(Session session, Throwable ex) throws JMSException { |
|
|
|
try { |
|
|
|
try { |
|
|
|
if (session.getTransacted() && isSessionLocallyTransacted(session)) { |
|
|
|
if (session.getTransacted()) { |
|
|
|
// Transacted session created by this container -> rollback.
|
|
|
|
if (isSessionLocallyTransacted(session)) { |
|
|
|
if (logger.isDebugEnabled()) { |
|
|
|
// Transacted session created by this container -> rollback.
|
|
|
|
logger.debug("Initiating transaction rollback on application exception", ex); |
|
|
|
if (logger.isDebugEnabled()) { |
|
|
|
|
|
|
|
logger.debug("Initiating transaction rollback on application exception", ex); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
JmsUtils.rollbackIfNecessary(session); |
|
|
|
} |
|
|
|
} |
|
|
|
JmsUtils.rollbackIfNecessary(session); |
|
|
|
} |
|
|
|
|
|
|
|
else { |
|
|
|
|
|
|
|
session.recover(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
catch (IllegalStateException ex2) { |
|
|
|
catch (IllegalStateException ex2) { |
|
|
|
|