@@ -711,9 +711,14 @@ else if (message != null && isClientAcknowledge(session)) {
711
711
* @throws javax.jms.JMSException in case of a rollback error
712
712
*/
713
713
protected void rollbackIfNecessary (Session session ) throws JMSException {
714
- if (session .getTransacted () && isSessionLocallyTransacted (session )) {
715
- // Transacted session created by this container -> rollback.
716
- JmsUtils .rollbackIfNecessary (session );
714
+ if (session .getTransacted ()) {
715
+ if (isSessionLocallyTransacted (session )) {
716
+ // Transacted session created by this container -> rollback.
717
+ JmsUtils .rollbackIfNecessary (session );
718
+ }
719
+ }
720
+ else {
721
+ session .recover ();
717
722
}
718
723
}
719
724
@@ -725,12 +730,17 @@ protected void rollbackIfNecessary(Session session) throws JMSException {
725
730
*/
726
731
protected void rollbackOnExceptionIfNecessary (Session session , Throwable ex ) throws JMSException {
727
732
try {
728
- if (session .getTransacted () && isSessionLocallyTransacted (session )) {
729
- // Transacted session created by this container -> rollback.
730
- if (logger .isDebugEnabled ()) {
731
- logger .debug ("Initiating transaction rollback on application exception" , ex );
733
+ if (session .getTransacted ()) {
734
+ if (isSessionLocallyTransacted (session )) {
735
+ // Transacted session created by this container -> rollback.
736
+ if (logger .isDebugEnabled ()) {
737
+ logger .debug ("Initiating transaction rollback on application exception" , ex );
738
+ }
739
+ JmsUtils .rollbackIfNecessary (session );
732
740
}
733
- JmsUtils .rollbackIfNecessary (session );
741
+ }
742
+ else {
743
+ session .recover ();
734
744
}
735
745
}
736
746
catch (IllegalStateException ex2 ) {
0 commit comments