6969 * consider setting "sessionTransacted" to "true" instead.
7070 * <li>"sessionAcknowledgeMode" set to "CLIENT_ACKNOWLEDGE":
7171 * Automatic message acknowledgment <i>after</i> successful listener execution;
72- * no redelivery in case of exception thrown.
72+ * best-effort redelivery in case of exception thrown.
7373 * <li>"sessionAcknowledgeMode" set to "DUPS_OK_ACKNOWLEDGE":
7474 * <i>Lazy</i> message acknowledgment during or after listener execution;
7575 * <i>potential redelivery</i> in case of exception thrown.
@@ -631,6 +631,7 @@ protected void doExecuteListener(Session session, Message message) throws JMSExc
631631 rollbackIfNecessary (session );
632632 throw new MessageRejectedWhileStoppingException ();
633633 }
634+
634635 try {
635636 invokeListener (session , message );
636637 }
@@ -660,6 +661,7 @@ protected void doExecuteListener(Session session, Message message) throws JMSExc
660661 @ SuppressWarnings ("rawtypes" )
661662 protected void invokeListener (Session session , Message message ) throws JMSException {
662663 Object listener = getMessageListener ();
664+
663665 if (listener instanceof SessionAwareMessageListener ) {
664666 doInvokeListener ((SessionAwareMessageListener ) listener , session , message );
665667 }
@@ -761,7 +763,7 @@ protected void rollbackIfNecessary(Session session) throws JMSException {
761763 JmsUtils .rollbackIfNecessary (session );
762764 }
763765 }
764- else {
766+ else if ( isClientAcknowledge ( session )) {
765767 session .recover ();
766768 }
767769 }
@@ -783,7 +785,7 @@ protected void rollbackOnExceptionIfNecessary(Session session, Throwable ex) thr
783785 JmsUtils .rollbackIfNecessary (session );
784786 }
785787 }
786- else {
788+ else if ( isClientAcknowledge ( session )) {
787789 session .recover ();
788790 }
789791 }
0 commit comments