Bruce, May i request you to please explain this: "To use this with ServiceMIx, you simply register it as a service in the servicemix.xml file using the XBean element in the class level XBean annotation (exceptionListenerService). "
Can I create a servicemix-bean component and write something like this in the xbean.xml: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns:bean="http://servicemix.apache.org/bean/1.0" xmlns:esb="http://esbinaction.com/errorhandling"> <bean:endpoint service="esb:errorComponent" endpoint="errorEndpoint" bean="#errorBean"/> <bean id="errorBean" class="errorhandling.ExceptionListenerService" /> </beans> Then the code that you have written can I use like this. I am not sure about configuring your code like this, that is putting it in a bean. would it work if I write something like this. Here the code I have copied from yours only but I am not sure where to put it. package errorhandling; import javax.jbi.messaging.MessageExchange; import org.apache.servicemix.jbi.event.ExchangeEvent; import org.apache.servicemix.jbi.event.ExchangeListener; /** * An [EMAIL PROTECTED] org.apache.servicemix.jbi.event.ExchangeListener} implementation * to handle exception customization. * * @org.apache.xbean.XBean element="exceptionListenerService" * @version $Revision$ * @author bsnyder */ public class ExceptionListenerService implements ExchangeListener { public void exchangeAccepted(ExchangeEvent event) { // TODO Auto-generated method stub } public void exchangeSent(ExchangeEvent event) { MessageExchange me = event.getExchange(); Exception exception = null; if (me.getError() != null) { exception = analyzeException(me); } me.setError(exception); } /** * This method abstracts any special exception handling behavior. * * @TODO Abstract this further using pluggable strategies to hold the * custom functionality. Then we just stuff the strategies that are * named in the servicemix.xml config into an array and just walk the * array, invoking the execute method on each strategy. * * @param error The exception that was thrown * @param endpointName The name of the endpoint that threw the exception * @return */ private Exception analyzeException(MessageExchange me) { Exception error = me.getError(); String serviceName = me.getEndpoint().getServiceName().toString(); String endpointName = me.getEndpoint().getEndpointName(); String errorMessage = error.getMessage(); // Add calls to custom processing here StringBuilder newErrorMessage = new StringBuilder("The following error was caused by service: ["); newErrorMessage.append(serviceName != null ? serviceName : "null"); newErrorMessage.append("] and endpoint: ["); newErrorMessage.append(endpointName != null ? endpointName : "null"); newErrorMessage.append("] "); newErrorMessage.append("Original error: "); newErrorMessage.append(errorMessage); return new Exception(newErrorMessage.toString(), error); } } I don't use servicemix.xml file to start my application on bus. I create a zip file of application and put it inside SMX-HOME/hotdeploy. Please........ Help me to use your solution. Thanks, Pratibha -- View this message in context: http://www.nabble.com/Exception-Listener-in-servicemix-tp15769242p17356436.html Sent from the ServiceMix - User mailing list archive at Nabble.com.
