SPR-6142 AbstractMessageListenerContainer now accepts an implementation of the ErrorHandler strategy for handling any uncaught exceptions thrown while processing a Message. The default behavior is still to log at error-level only (no ErrorHandler).
@ -132,6 +137,8 @@ public abstract class AbstractMessageListenerContainer extends AbstractJmsListen
@@ -132,6 +137,8 @@ public abstract class AbstractMessageListenerContainer extends AbstractJmsListen
privateExceptionListenerexceptionListener;
privateErrorHandlererrorHandler;
privatebooleanexposeListenerSession=true;
privatebooleanacceptMessagesWhileStopping=false;
@ -342,6 +349,15 @@ public abstract class AbstractMessageListenerContainer extends AbstractJmsListen
@@ -342,6 +349,15 @@ public abstract class AbstractMessageListenerContainer extends AbstractJmsListen
@ -642,8 +658,8 @@ public abstract class AbstractMessageListenerContainer extends AbstractJmsListen
@@ -642,8 +658,8 @@ public abstract class AbstractMessageListenerContainer extends AbstractJmsListen
}
if(isActive()){
// Regular case: failed while active.
// Log at error level.
logger.warn("Execution of JMS message listener failed",ex);
// Invoke ErrorHandler if available.
invokeErrorHandler(ex);
}
else{
// Rare case: listener thread failed after container shutdown.
@ -664,6 +680,20 @@ public abstract class AbstractMessageListenerContainer extends AbstractJmsListen
@@ -664,6 +680,20 @@ public abstract class AbstractMessageListenerContainer extends AbstractJmsListen
@ -380,6 +383,64 @@ public class SimpleMessageListenerContainerTests extends AbstractMessageListener
@@ -380,6 +383,64 @@ public class SimpleMessageListenerContainerTests extends AbstractMessageListener