Exception Listeners
Many messaging applications include consumers who receive messages and perform work but never send any JMS messages. Because these clients are only active when a message is delivered, there is no means to notify them when their JMS Server has failed. JMS provides the ExceptionListener facility to deliver these out-of-band exceptions to clients.
A JMS ExceptionListener asynchronously receives connection error exceptions. ExceptionListener only receives exceptions that cannot be thrown to a method call. For instance, a send call on a broken connection will receive a JMSException, but this exception will not be transmitted to the ExceptionListener.
ExceptionListeners implement javax.jms.ExceptionListener that contains the onException(JMSException) method. When an out-of-band exception occurs, the ExceptionListener's onException method receives the raised exception. ExceptionListeners are not written to be thread-safe or reentrant. A new exception will not be delivered until the ExceptionListener's onException method has returned.
public class MyExceptionListener implements javax.jms.ExceptionListener { public void onException(javax.jms.JMSException e) { ... //handle exception } }
A client registers an ExceptionListener on the JMS connection with the setExceptionListener(ExceptionListener) method.
qConnection.setExceptionListener(new MyExceptionListener());
WebLogic's JMS implementation also enables the ExceptionListener to be registered with the entire JMS session by using WLSession's setExceptionListener(ExceptionListener) method.
import weblogic.jms.extensions.WLSession; WLSession wlSession = (WLSession) session; wlSession.setExceptionListener(new ExceptionListener());