1 2 Previous Next 18 Replies Latest reply on May 27, 2011 3:53 AM by h.wolffenbuttel

    Is it possible to stop a thrown Exception within an ESB service?

    calleandersson

      Hi!

       

      I have an ESB (4.9) service in which I use a Http Gateway listener and recieves a SOAP request, make some adjustments to the request, call an external webservice (using SOAP Proxy Action), adjust the response and finally return the response as an SOAP message.

       

      The solution works as it should (using SoapUI to call my service) but I want a SOAP Fault message to be returned if some problem/exception occur in the action pipeline.

       

      I have successfully tested to throw an ActionProcessingFaultException (setting the message body to a custom SOAP Fault message string) but I don't know how to handle situations where other types of exceptions are thrown (e.g. if a SaxParserException is thrown within a SOAP Proxy Action (this could be forced by trying to send a SOAP message where parts of the message has been removed)). By specifying an exceptionMethod in my first action I am able to see the other types of exceptions "passing-by" but I have not been able to prevent them from continuing to the caller of my service. I want to stop these kinds of exceptions and return a custom SOAP Fault message instead. Is this possible and how could I solve it?

        • 1. Is it possible to stop a thrown Exception within an ESB service?
          tcunning

          I think you can solve this by including XsltAction within your chain.      Check out the blurb on it in the Programmer's guide, it talks about how it deals with exceptions.

          • 2. Is it possible to stop a thrown Exception within an ESB service?
            calleandersson

            I have been reading the documentation regarding XsltAction (chapter 12.1.7 in the ESB Programmers Guide) and as far as I understand this action could be used for validation to avoid a SAXParseException (generating an ActionProcessionException instead). However, if I understood correctly, this only seems to solve the particular case I mentioned in my previous post. What if e.g. an IOException or NullPointerException occurs in a random action? Is it somehow possible to catch all kinds of different exceptions and send a custom message (e.g. a SOAP Fault message) to the caller of my service?

            • 3. Re: Is it possible to stop a thrown Exception within an ESB service?
              tcunning

              Yes, I'm pretty sure you can do that.         In exceptions_fault, try modifying MyBasicAction.causesException to throw a NullPointerException rather than an ActionProcessingException.       What you receive in MyExceptionHandlingAction.catchesException will be a NullPointerException.

              • 4. Re: Is it possible to stop a thrown Exception within an ESB service?
                calleandersson

                Thanks for your answer Tom but the problem isn't to receive an exception in the exceptionMethod of an Action but to stop it from reaching the caller of the service.

                 

                Refering to the exception_fault sample you mention, what I want to do is to stop the exception received in MyExceptionHandlingAction.catchesException() from reaching SendEsbMessageSync.main(). If an exception occurs I want to send a custom message (for example "AN UNEXPECTED ERROR OCCURED") to SendEsbMessageSync.main().

                 

                I made some tests throwing different kinds of exceptions using the exception_fault sample.

                 

                Throwing a NullPointerException with the text "BAD NULLPOINTER STUFF HAPPENED" gives the following output in the command terminal window:

                ...

                callSync2:

                     [echo] Runs Test ESB Message Sender

                     [java] Inbound Data: NO Gateway: Sync w/catch in server-side

                     [java] 09:26:13,645 DEBUG [main][TimedSocketFactory] createSocket, hostAddr: localhost/127.0.0.1, port: 1099, localAddr: null, localPort: 0, timeout: 0

                     [java] Reply Message: MESSAGE ADJUSTED WITHIN MyExceptionHandlingAction.catchesException()

                 

                And the following output was displayed in the Console window (inside JBoss Developer Studio):

                ...

                09:26:16,421 INFO  [STDOUT] &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

                09:26:16,454 INFO  [STDOUT] MyExceptionHandlingAction Body: NO Gateway: Sync w/catch in server-side |BASIC_ACTION|  |JUST_ANOTHER_ACTION|  |EXCEPTION_HANDLING|

                09:26:16,454 INFO  [STDOUT] &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

                09:26:16,454 INFO  [STDOUT] About to cause an exception

                09:26:16,454 INFO  [STDOUT] &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

                09:26:16,454 INFO  [STDOUT] Exception message: BAD ACTIONPROCESSINGFAULTEXCEPTION STUFF HAPPENED, class: class org.jboss.soa.esb.actions.ActionProcessingFaultException

                09:26:16,454 INFO  [STDOUT] MyExceptionHandlingAction catchesException:

                NO Gateway: Sync w/catch in server-side |BASIC_ACTION|  |JUST_ANOTHER_ACTION|  |EXCEPTION_HANDLING|

                09:26:16,454 INFO  [STDOUT] Adjusting the message body

                09:26:16,454 INFO  [STDOUT] &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

                09:26:16,454 INFO  [STDOUT] &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

                09:26:16,454 INFO  [STDOUT] JustAnotherAction exceptionHandler:

                MESSAGE ADJUSTED WITHIN MyExceptionHandlingAction.catchesException()

                09:26:16,454 INFO  [STDOUT] &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

                 

                Throwing an ActionProcessingException with the text "BAD ACTIONPROCESSINGEXCEPTION STUFF HAPPENED" gave the same results (with the only difference that the exception message and class differed in the output).

                 

                Throwing a ActionProcessingFaultException with the text "BAD ACTIONPROCESSINGFAULTEXCEPTION STUFF HAPPENED" gives the following output in the command terminal window:

                ...

                callSync2:

                     [echo] Runs Test ESB Message Sender

                     [java] Inbound Data: NO Gateway: Sync w/catch in server-side

                     [java] 09:31:46,832 DEBUG [main][TimedSocketFactory] createSocket, hostAddr: localhost/127.0.0.1, port: 1099, localAddr: null, localPort: 0, timeout: 0

                     [java] Exception caught by client: org.jboss.soa.esb.couriers.FaultMessageException: java.lang.NullPointerException: BAD NULLPOINTER STUFF HAPPENED

                     [java] BAD NULLPOINTER STUFF HAPPENED

                 

                And the following output was displayed in the Console window (inside JBoss Developer Studio):

                ...

                09:31:49,905 INFO  [STDOUT] &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

                09:31:49,906 INFO  [STDOUT] MyExceptionHandlingAction Body: NO Gateway: Sync w/catch in server-side |BASIC_ACTION|  |JUST_ANOTHER_ACTION|  |EXCEPTION_HANDLING|

                09:31:49,906 INFO  [STDOUT] &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

                09:31:49,906 INFO  [STDOUT] About to cause an exception

                09:31:49,906 INFO  [STDOUT] &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

                09:31:49,906 INFO  [STDOUT] Exception message: BAD NULLPOINTER STUFF HAPPENED, class: class java.lang.NullPointerException

                09:31:49,906 INFO  [STDOUT] MyExceptionHandlingAction catchesException:

                NO Gateway: Sync w/catch in server-side |BASIC_ACTION|  |JUST_ANOTHER_ACTION|  |EXCEPTION_HANDLING|

                09:31:49,906 INFO  [STDOUT] Adjusting the message body

                09:31:49,906 INFO  [STDOUT] &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

                09:31:49,906 INFO  [STDOUT] &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

                09:31:49,906 INFO  [STDOUT] JustAnotherAction exceptionHandler:

                MESSAGE ADJUSTED WITHIN MyExceptionHandlingAction.catchesException()

                09:31:49,906 INFO  [STDOUT] &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

                 

                As seen in the command terminal window output, the ActionProcessingFaultException doesn't generate any "Exception caught by client" (in SendEsbMessageSync.main()) and the text received is the content of the ESB message (not the exception message as in the case with the other types of Exceptions).

                 

                The question is still if it is possible to stop a thrown exception inside the action pipeline from reaching the caller of the service.

                 

                 

                Message was edited by: Calle Andersson

                • 5. Re: Is it possible to stop a thrown Exception within an ESB service?
                  h.wolffenbuttel

                  If you really want to stop an error to be send back to the client, you could consider implementing an agent which is a simple implementation of  a

                  AbstractActionPipelineProcessor. In the process(Message) method you kan initialise a serviceInvoker and put a try/catch around the call

                  invoker.deliverSync(messageToDeliver, timeoutMillis);. That way you can control any exception that is thrown. If there is an exception thrown you can either return null or put a message in the default message body to your liking to be returned to the client.

                   

                  Warning: Don't forget to make a copy of your original message and its parameters, otherwise you will recieve an unresponsive EPR. It looks something like this:

                   

                  Message messageToDeliver = MessageFactory.getInstance().getMessage(message.getType());

                  Properties propertiesToSet = message.getProperties();

                  Properties properties = messageToDeliver.getProperties();

                  String[] names = propertiesToSet.getNames();

                   

                  for (String name : names) {

                    properties.setProperty(name, propertiesToSet.getProperty(name));

                  }

                  messageToDeliver.getBody().add(Body.DEFAULT_LOCATION, message.getBody().get());

                   

                  Regards,

                   

                  Hans

                  • 6. Re: Is it possible to stop a thrown Exception within an ESB service?
                    calleandersson

                    Hi Hans and thanks for your answer.

                     

                    I have tried to adjust the exception_fault sample according to your suggestion.

                     

                    I created a custom action class like this:

                    {code:java}

                    public class ServiceInvokerAction extends AbstractActionPipelineProcessor {

                       protected ConfigTree   _config;

                        

                       public ServiceInvokerAction(ConfigTree config) { _config = config; }

                      

                       public Message process(Message message) throws ActionProcessingException {

                          try {

                             ServiceInvoker serviceInvoker = new ServiceInvoker("ExceptionalServices", "ExceptionCaughtService");

                            

                             //Message requestMessage = MessageFactory.getInstance().getMessage(MessageType.JBOSS_XML);

                             //requestMessage.getBody().add(message.getBody().get().toString());

                             //Message responseMessage = serviceInvoker.deliverSync(requestMessage, 10000);

                             //message.getBody().add(responseMessage.getBody().get().toString());

                            

                             Message messageToDeliver = MessageFactory.getInstance().getMessage(message.getType());

                            

                             System.out.println(" ->");

                             // copy properties

                             Properties properties = messageToDeliver.getProperties();

                             Properties propertiesToSet = message.getProperties();

                             for(String name : propertiesToSet.getNames()) {

                                System.out.println(name + ": " + propertiesToSet.getProperty(name));

                                properties.setProperty(name, propertiesToSet.getProperty(name));

                             }

                     

                             System.out.println(" ---");

                     

                             // copy body

                             Body body = messageToDeliver.getBody();

                             Body bodyToSet = message.getBody();

                             for(String name : bodyToSet.getNames()) {

                                System.out.println(name + ": " + bodyToSet.get(name));

                                body.add(name, bodyToSet.get(name));

                             }

                             System.out.println(" <-");

                            

                             message = serviceInvoker.deliverSync(messageToDeliver, 10000);

                          } catch (Exception e) {

                             System.out.println("EXCEPTION CAUGHT!!!");

                             message.getBody().add("An unexpected error has been caught in ServiceInvokerAction!!!");

                          }

                         

                          return message;

                       }

                    }

                    {code}

                     

                    In jboss-esb.xml I added the following channels to the exisiting JMS provider:

                    {code:xml}

                    <jms-bus busid="ServiceInvokerServiceGW">

                       <jms-message-filter dest-name="queue/quickstart_exceptions_faults_GW" dest-type="QUEUE" selector="serviceName='ServiceInvokerService'"/>

                    </jms-bus>

                    <jms-bus busid="ServiceInvokerServiceESB">

                       <jms-message-filter dest-name="queue/quickstart_exceptions_faults_ESB" dest-type="QUEUE" selector="serviceName='ServiceInvokerService'"/>

                    </jms-bus>

                    {code}

                     

                    I also added the following service to jboss-esb.xml:

                    {code:xml}

                    <service category="ExceptionalServices" description="Uses a ServiceInvoker to call another service" invmScope="GLOBAL" name="ServiceInvokerService">

                       <listeners>

                          <jms-listener busidref="ServiceInvokerServiceGW" is-gateway="true" name="JMS-Gateway"/>

                          <jms-listener busidref="ServiceInvokerServiceESB" name="JMS-ESBListener"/>

                       </listeners>

                       <actions mep="RequestResponse">

                          <action class="org.jboss.soa.esb.samples.quickstart.exceptions.JustAnotherAction" name="JustAnotherAction" process="displayMessage">

                          <property name="exceptionMethod" value="exceptionHandler"/>

                          </action>

                          <action class="org.jboss.soa.esb.samples.quickstart.exceptions.ServiceInvokerAction" name="serviceInvoker"/>

                       </actions>

                    </service>

                    {code}

                     

                    Finally I added the following task to build.xml

                    {code:xml}

                    <target name="callSync3" depends="compile" description="Will send an esb Message">

                       <echo>Runs Test ESB Message Sender</echo>

                       <java fork="yes" classname="org.jboss.soa.esb.samples.quickstart.exceptions.test.SendEsbMessageSync" failonerror="true">

                          <arg value="ExceptionalServices"/>

                          <arg value="ServiceInvokerService"/> 

                          <arg value="NO Gateway: Sync w/catch in server-side"/>

                          <classpath refid="exec-classpath"/>

                       </java>

                    </target>

                    {code}

                     

                    I deployed the project and tried the solution by calling my new ant task in a command terminal window but I don't get it to work as expected. The output I get is the following:

                    {noformat}

                    ...

                    callSync3:

                         [echo] Runs Test ESB Message Sender

                         [java] Inbound Data: NO Gateway: Sync w/catch in server-side

                         [java] 19:24:11,559 DEBUG [main][TimedSocketFactory] createSocket, hostAddr: localhost/127.0.0.1, port: 1099, localAddr: null, localPort: 0, timeout: 0

                         [java] Exception caught by client: org.jboss.soa.esb.listeners.message.ResponseTimeoutException: No response received for service [ExceptionalServices:ServiceInvokerService].

                    {noformat}

                     

                    In the Console window it seems like a message is sent over and over again:

                    {noformat}

                    20:12:07,240 INFO  [ServiceInvoker] Unresponsive EPR: JMSEpr [ PortReference < <wsa:Address jms:localhost:1099#queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.initial : org.jnp.interfaces.NamingContextFactory/>, <wsa:ReferenceProperties jbossesb:java.naming.provider.url : localhost:1099/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.url.pkgs : org.jnp.interfaces/>, <wsa:ReferenceProperties jbossesb:destination-type : queue/>, <wsa:ReferenceProperties jbossesb:destination-name : queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:specification-version : 1.1/>, <wsa:ReferenceProperties jbossesb:connection-factory : ConnectionFactory/>, <wsa:ReferenceProperties jbossesb:message-selector : serviceName='ExceptionCaughtService'/>, <wsa:ReferenceProperties jbossesb:persistent : true/>, <wsa:ReferenceProperties jbossesb:acknowledge-mode : AUTO_ACKNOWLEDGE/>, <wsa:ReferenceProperties jbossesb:transacted : false/>, <wsa:ReferenceProperties jbossesb:type : urn:jboss/esb/epr/type/jms/> > ] for message: header: [  ]

                    20:12:17,256 INFO  [ServiceInvoker] Unresponsive EPR: JMSEpr [ PortReference < <wsa:Address jms:localhost:1099#queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.initial : org.jnp.interfaces.NamingContextFactory/>, <wsa:ReferenceProperties jbossesb:java.naming.provider.url : localhost:1099/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.url.pkgs : org.jnp.interfaces/>, <wsa:ReferenceProperties jbossesb:destination-type : queue/>, <wsa:ReferenceProperties jbossesb:destination-name : queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:specification-version : 1.1/>, <wsa:ReferenceProperties jbossesb:connection-factory : ConnectionFactory/>, <wsa:ReferenceProperties jbossesb:message-selector : serviceName='ServiceInvokerService'/>, <wsa:ReferenceProperties jbossesb:persistent : true/>, <wsa:ReferenceProperties jbossesb:acknowledge-mode : AUTO_ACKNOWLEDGE/>, <wsa:ReferenceProperties jbossesb:transacted : false/>, <wsa:ReferenceProperties jbossesb:type : urn:jboss/esb/epr/type/jms/> > ] for message: header: [  ]

                    20:12:17,256 INFO  [ServiceInvoker] Delivering message [header: [  ]] to DLQ.

                    20:12:17,366 INFO  [STDOUT] EXCEPTION CAUGHT!!!

                    20:12:17,382 INFO  [STDOUT] &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

                    20:12:17,382 INFO  [STDOUT] JustAnotherAction Body: NO Gateway: Sync w/catch in server-side |JUST_ANOTHER_ACTION|

                    20:12:17,382 INFO  [STDOUT] &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

                    20:12:17,382 INFO  [STDOUT]  ->

                    20:12:17,382 INFO  [STDOUT] org.jboss.soa.esb.message.byte.size: 4341

                    20:12:17,382 INFO  [STDOUT] org.jboss.soa.esb.message.time.processed: 0

                    20:12:17,382 INFO  [STDOUT] javax.jms.message.redelivered: false

                    20:12:17,382 INFO  [STDOUT] jboss.esb:category=MessageCounter,deployment=Quickstart_exceptions_faults.esb,service-category=ExceptionalServices,service-name=ServiceInvokerServiceTime: 737764

                    20:12:17,382 INFO  [STDOUT] serviceName: ServiceInvokerService

                    20:12:17,382 INFO  [STDOUT]  ---

                    20:12:17,382 INFO  [STDOUT] org.jboss.soa.esb.message.defaultEntry: NO Gateway: Sync w/catch in server-side |JUST_ANOTHER_ACTION|

                    20:12:17,382 INFO  [STDOUT]  <-

                    20:12:27,397 INFO  [ServiceInvoker] Unresponsive EPR: JMSEpr [ PortReference < <wsa:Address jms:localhost:1099#queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.initial : org.jnp.interfaces.NamingContextFactory/>, <wsa:ReferenceProperties jbossesb:java.naming.provider.url : localhost:1099/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.url.pkgs : org.jnp.interfaces/>, <wsa:ReferenceProperties jbossesb:destination-type : queue/>, <wsa:ReferenceProperties jbossesb:destination-name : queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:specification-version : 1.1/>, <wsa:ReferenceProperties jbossesb:connection-factory : ConnectionFactory/>, <wsa:ReferenceProperties jbossesb:message-selector : serviceName='ExceptionCaughtService'/>, <wsa:ReferenceProperties jbossesb:persistent : true/>, <wsa:ReferenceProperties jbossesb:acknowledge-mode : AUTO_ACKNOWLEDGE/>, <wsa:ReferenceProperties jbossesb:transacted : false/>, <wsa:ReferenceProperties jbossesb:type : urn:jboss/esb/epr/type/jms/> > ] for message: header: [  ]

                    20:12:37,398 INFO  [ServiceInvoker] Unresponsive EPR: JMSEpr [ PortReference < <wsa:Address jms:localhost:1099#queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.initial : org.jnp.interfaces.NamingContextFactory/>, <wsa:ReferenceProperties jbossesb:java.naming.provider.url : localhost:1099/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.url.pkgs : org.jnp.interfaces/>, <wsa:ReferenceProperties jbossesb:destination-type : queue/>, <wsa:ReferenceProperties jbossesb:destination-name : queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:specification-version : 1.1/>, <wsa:ReferenceProperties jbossesb:connection-factory : ConnectionFactory/>, <wsa:ReferenceProperties jbossesb:message-selector : serviceName='ServiceInvokerService'/>, <wsa:ReferenceProperties jbossesb:persistent : true/>, <wsa:ReferenceProperties jbossesb:acknowledge-mode : AUTO_ACKNOWLEDGE/>, <wsa:ReferenceProperties jbossesb:transacted : false/>, <wsa:ReferenceProperties jbossesb:type : urn:jboss/esb/epr/type/jms/> > ] for message: header: [  ]

                    20:12:47,398 INFO  [ServiceInvoker] Unresponsive EPR: JMSEpr [ PortReference < <wsa:Address jms:localhost:1099#queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.initial : org.jnp.interfaces.NamingContextFactory/>, <wsa:ReferenceProperties jbossesb:java.naming.provider.url : localhost:1099/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.url.pkgs : org.jnp.interfaces/>, <wsa:ReferenceProperties jbossesb:destination-type : queue/>, <wsa:ReferenceProperties jbossesb:destination-name : queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:specification-version : 1.1/>, <wsa:ReferenceProperties jbossesb:connection-factory : ConnectionFactory/>, <wsa:ReferenceProperties jbossesb:message-selector : serviceName='ExceptionCaughtService'/>, <wsa:ReferenceProperties jbossesb:persistent : true/>, <wsa:ReferenceProperties jbossesb:acknowledge-mode : AUTO_ACKNOWLEDGE/>, <wsa:ReferenceProperties jbossesb:transacted : false/>, <wsa:ReferenceProperties jbossesb:type : urn:jboss/esb/epr/type/jms/> > ] for message: header: [  ]

                    20:12:57,399 INFO  [ServiceInvoker] Unresponsive EPR: JMSEpr [ PortReference < <wsa:Address jms:localhost:1099#queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.initial : org.jnp.interfaces.NamingContextFactory/>, <wsa:ReferenceProperties jbossesb:java.naming.provider.url : localhost:1099/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.url.pkgs : org.jnp.interfaces/>, <wsa:ReferenceProperties jbossesb:destination-type : queue/>, <wsa:ReferenceProperties jbossesb:destination-name : queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:specification-version : 1.1/>, <wsa:ReferenceProperties jbossesb:connection-factory : ConnectionFactory/>, <wsa:ReferenceProperties jbossesb:message-selector : serviceName='ServiceInvokerService'/>, <wsa:ReferenceProperties jbossesb:persistent : true/>, <wsa:ReferenceProperties jbossesb:acknowledge-mode : AUTO_ACKNOWLEDGE/>, <wsa:ReferenceProperties jbossesb:transacted : false/>, <wsa:ReferenceProperties jbossesb:type : urn:jboss/esb/epr/type/jms/> > ] for message: header: [  ]

                    20:12:57,399 INFO  [ServiceInvoker] Delivering message [header: [  ]] to DLQ.

                    20:12:57,399 INFO  [STDOUT] EXCEPTION CAUGHT!!!

                    20:12:57,400 INFO  [STDOUT] &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

                    20:12:57,400 INFO  [STDOUT] JustAnotherAction Body: NO Gateway: Sync w/catch in server-side |JUST_ANOTHER_ACTION|  |JUST_ANOTHER_ACTION|  |JUST_ANOTHER_ACTION|  |JUST_ANOTHER_ACTION|  |JUST_ANOTHER_ACTION|

                    20:12:57,400 INFO  [STDOUT] &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

                    20:12:57,478 INFO  [STDOUT]  ->

                    20:12:57,478 INFO  [STDOUT] org.jboss.soa.esb.message.transport.type: JMS

                    20:12:57,478 INFO  [STDOUT] org.jboss.soa.esb.message.byte.size: 5526

                    20:12:57,478 INFO  [STDOUT] org.jboss.soa.esb.message.time.processed: 0

                    20:12:57,478 INFO  [STDOUT] javax.jms.message.redelivered: false

                    20:12:57,478 INFO  [STDOUT] org.jboss.soa.esb.message.source: PortReference < jms:localhost:1099#queue/quickstart_exceptions_faults_ESB >

                    20:12:57,478 INFO  [STDOUT] jboss.esb:category=MessageCounter,deployment=Quickstart_exceptions_faults.esb,service-category=ExceptionalServices,service-name=ServiceInvokerServiceTime: 2077101

                    20:12:57,478 INFO  [STDOUT] serviceName: ServiceInvokerService

                    20:12:57,478 INFO  [STDOUT]  ---

                    20:12:57,478 INFO  [STDOUT] org.jboss.soa.esb.message.defaultEntry: NO Gateway: Sync w/catch in server-side |JUST_ANOTHER_ACTION|  |JUST_ANOTHER_ACTION|  |JUST_ANOTHER_ACTION|  |JUST_ANOTHER_ACTION|  |JUST_ANOTHER_ACTION|

                    20:12:57,478 INFO  [STDOUT]  <-

                    20:13:07,509 INFO  [ServiceInvoker] Unresponsive EPR: JMSEpr [ PortReference < <wsa:Address jms:localhost:1099#queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.initial : org.jnp.interfaces.NamingContextFactory/>, <wsa:ReferenceProperties jbossesb:java.naming.provider.url : localhost:1099/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.url.pkgs : org.jnp.interfaces/>, <wsa:ReferenceProperties jbossesb:destination-type : queue/>, <wsa:ReferenceProperties jbossesb:destination-name : queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:specification-version : 1.1/>, <wsa:ReferenceProperties jbossesb:connection-factory : ConnectionFactory/>, <wsa:ReferenceProperties jbossesb:message-selector : serviceName='ExceptionCaughtService'/>, <wsa:ReferenceProperties jbossesb:persistent : true/>, <wsa:ReferenceProperties jbossesb:acknowledge-mode : AUTO_ACKNOWLEDGE/>, <wsa:ReferenceProperties jbossesb:transacted : false/>, <wsa:ReferenceProperties jbossesb:type : urn:jboss/esb/epr/type/jms/> > ] for message: header: [  ]

                    20:13:17,510 INFO  [ServiceInvoker] Unresponsive EPR: JMSEpr [ PortReference < <wsa:Address jms:localhost:1099#queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.initial : org.jnp.interfaces.NamingContextFactory/>, <wsa:ReferenceProperties jbossesb:java.naming.provider.url : localhost:1099/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.url.pkgs : org.jnp.interfaces/>, <wsa:ReferenceProperties jbossesb:destination-type : queue/>, <wsa:ReferenceProperties jbossesb:destination-name : queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:specification-version : 1.1/>, <wsa:ReferenceProperties jbossesb:connection-factory : ConnectionFactory/>, <wsa:ReferenceProperties jbossesb:message-selector : serviceName='ServiceInvokerService'/>, <wsa:ReferenceProperties jbossesb:persistent : true/>, <wsa:ReferenceProperties jbossesb:acknowledge-mode : AUTO_ACKNOWLEDGE/>, <wsa:ReferenceProperties jbossesb:transacted : false/>, <wsa:ReferenceProperties jbossesb:type : urn:jboss/esb/epr/type/jms/> > ] for message: header: [  ]

                    20:13:27,510 INFO  [ServiceInvoker] Unresponsive EPR: JMSEpr [ PortReference < <wsa:Address jms:localhost:1099#queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.initial : org.jnp.interfaces.NamingContextFactory/>, <wsa:ReferenceProperties jbossesb:java.naming.provider.url : localhost:1099/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.url.pkgs : org.jnp.interfaces/>, <wsa:ReferenceProperties jbossesb:destination-type : queue/>, <wsa:ReferenceProperties jbossesb:destination-name : queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:specification-version : 1.1/>, <wsa:ReferenceProperties jbossesb:connection-factory : ConnectionFactory/>, <wsa:ReferenceProperties jbossesb:message-selector : serviceName='ExceptionCaughtService'/>, <wsa:ReferenceProperties jbossesb:persistent : true/>, <wsa:ReferenceProperties jbossesb:acknowledge-mode : AUTO_ACKNOWLEDGE/>, <wsa:ReferenceProperties jbossesb:transacted : false/>, <wsa:ReferenceProperties jbossesb:type : urn:jboss/esb/epr/type/jms/> > ] for message: header: [  ]

                    20:13:37,511 INFO  [ServiceInvoker] Unresponsive EPR: JMSEpr [ PortReference < <wsa:Address jms:localhost:1099#queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.initial : org.jnp.interfaces.NamingContextFactory/>, <wsa:ReferenceProperties jbossesb:java.naming.provider.url : localhost:1099/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.url.pkgs : org.jnp.interfaces/>, <wsa:ReferenceProperties jbossesb:destination-type : queue/>, <wsa:ReferenceProperties jbossesb:destination-name : queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:specification-version : 1.1/>, <wsa:ReferenceProperties jbossesb:connection-factory : ConnectionFactory/>, <wsa:ReferenceProperties jbossesb:message-selector : serviceName='ServiceInvokerService'/>, <wsa:ReferenceProperties jbossesb:persistent : true/>, <wsa:ReferenceProperties jbossesb:acknowledge-mode : AUTO_ACKNOWLEDGE/>, <wsa:ReferenceProperties jbossesb:transacted : false/>, <wsa:ReferenceProperties jbossesb:type : urn:jboss/esb/epr/type/jms/> > ] for message: header: [  ]

                    20:13:37,511 INFO  [ServiceInvoker] Delivering message [header: [  ]] to DLQ.

                    20:13:37,730 INFO  [STDOUT] EXCEPTION CAUGHT!!!

                    20:13:37,746 INFO  [STDOUT] &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

                    20:13:37,746 INFO  [STDOUT] JustAnotherAction Body: <Envelope><Header xmlns:wsa="jms:localhost:1099#queue/quickstart_exceptions_faults_GWhttp://schemas.xmlsoap.org/ws/2004/08/addressing"><wsa:To>jms:localhost:1099#queue/quickstart_exceptions_faults_GW</wsa:To><jbossesb:java.naming.factory.initial xmlns:jbossesb="org.jnp.interfaces.NamingContextFactoryhttp://schemas.jboss.com/ws/2007/01/jbossesb">org.jnp.interfaces.NamingContextFactory</jbossesb:java.naming.factory.initial><jbossesb:java.naming.provider.url xmlns:jbossesb="localhost:1099http://schemas.jboss.com/ws/2007/01/jbossesb">localhost:1099</jbossesb:java.naming.provider.url><jbossesb:java.naming.factory.url.pkgs xmlns:jbossesb="org.jnp.interfaceshttp://schemas.jboss.com/ws/2007/01/jbossesb">org.jnp.interfaces</jbossesb:java.naming.factory.url.pkgs><jbossesb:destination-type xmlns:jbossesb="queuehttp://schemas.jboss.com/ws/2007/01/jbossesb">queue</jbossesb:destination-type><jbossesb:destination-name xmlns:jbossesb="queue/quickstart_exceptions_faults_GWhttp://schemas.jboss.com/ws/2007/01/jbossesb">queue/quickstart_exceptions_faults_GW</jbossesb:destination-name><jbossesb:specification-version xmlns:jbossesb="1.1http://schemas.jboss.com/ws/2007/01/jbossesb">1.1</jbossesb:specification-version><jbossesb:connection-factory xmlns:jbossesb="ConnectionFactoryhttp://schemas.jboss.com/ws/2007/01/jbossesb">ConnectionFactory</jbossesb:connection-factory><jbossesb:message-selector xmlns:jbossesb="http://schemas.jboss.com/ws/2007/01/jbossesb">serviceName='ServiceInvokerService'</jbossesb:message-selector><jbossesb:persistent xmlns:jbossesb="truehttp://schemas.jboss.com/ws/2007/01/jbossesb">true</jbossesb:persistent><jbossesb:acknowledge-mode xmlns:jbossesb="AUTO_ACKNOWLEDGEhttp://schemas.jboss.com/ws/2007/01/jbossesb">AUTO_ACKNOWLEDGE</jbossesb:acknowledge-mode><jbossesb:transacted xmlns:jbossesb="falsehttp://schemas.jboss.com/ws/2007/01/jbossesb">false</jbossesb:transacted><jbossesb:type xmlns:jbossesb="urn:jboss/esb/epr/type/jmsjms:localhost:1099#queue/quickstart_exceptions_faults_GW_replyhttp://schemas.jboss.com/ws/2007/01/jbossesb">urn:jboss/esb/epr/type/jms</jbossesb:type><wsa:ReplyTo><wsa:Address>jms:localhost:1099#queue/quickstart_exceptions_faults_GW_reply</wsa:Address><wsa:ReferenceProperties><jbossesb:java.naming.provider.url xmlns:jbossesb="localhost:1099http://schemas.jboss.com/ws/2007/01/jbossesb">localhost:1099</jbossesb:java.naming.provider.url><jbossesb:java.naming.factory.initial xmlns:jbossesb="org.jnp.interfaces.NamingContextFactoryhttp://schemas.jboss.com/ws/2007/01/jbossesb">org.jnp.interfaces.NamingContextFactory</jbossesb:java.naming.factory.initial><jbossesb:java.naming.factory.url.pkgs xmlns:jbossesb="org.jnp.interfaceshttp://schemas.jboss.com/ws/2007/01/jbossesb">org.jnp.interfaces</jbossesb:java.naming.factory.url.pkgs><jbossesb:destination-type xmlns:jbossesb="queuehttp://schemas.jboss.com/ws/2007/01/jbossesb">queue</jbossesb:destination-type><jbossesb:destination-name xmlns:jbossesb="queue/quickstart_exceptions_faults_GW_replyhttp://schemas.jboss.com/ws/2007/01/jbossesb">queue/quickstart_exceptions_faults_GW_reply</jbossesb:destination-name><jbossesb:specification-version xmlns:jbossesb="1.1http://schemas.jboss.com/ws/2007/01/jbossesb">1.1</jbossesb:specification-version><jbossesb:connection-factory xmlns:jbossesb="ConnectionFactoryhttp://schemas.jboss.com/ws/2007/01/jbossesb">ConnectionFactory</jbossesb:connection-factory><jbossesb:message-selector xmlns:jbossesb="http://schemas.jboss.com/ws/2007/01/jbossesb">serviceName='ServiceInvokerService' AND jbossESBresponseUUID='3c68f745-673a-4dc9-9422-35a8e1e8a27c'</jbossesb:message-selector><jbossesb:persistent xmlns:jbossesb="truehttp://schemas.jboss.com/ws/2007/01/jbossesb">true</jbossesb:persistent><jbossesb:acknowledge-mode xmlns:jbossesb="AUTO_ACKNOWLEDGEhttp://schemas.jboss.com/ws/2007/01/jbossesb">AUTO_ACKNOWLEDGE</jbossesb:acknowledge-mode><jbossesb:transacted xmlns:jbossesb="falsehttp://schemas.jboss.com/ws/2007/01/jbossesb">false</jbossesb:transacted><jbossesb:type xmlns:jbossesb="urn:jboss/esb/epr/type/jms /><Body><Content><Key>b3JnLmpib3NzLnNvYS5lc2IubWVzc2FnZS5kZWZhdWx0RW50cnk=</Key><Value><marshalunmarshal><plugin-type>urn:xml/marshalunmarshal/plugin/serialization</plugin-type>rO0ABXQAJ05PIEdhdGV3YXk6IFN5bmMgdy9jYXRjaCBpbiBzZXJ2ZXItc2lkZQ==</marshalunmarshal></Value></Content></Body><Attachment /><Properties><Property><Key>b3JnLmpib3NzLnNvYS5lc2IubWVzc2FnZS5ieXRlLnNpemU=</Key><Value>rO0ABXQABDQxMDA=</Value></Property><Property><Key>b3JnLmpib3NzLnNvYS5lc2IubWVzc2FnZS50aW1lLnByb2Nlc3NlZA==</Key><Value>rO0ABXQAATA=</Value></Property></Properties></Envelope> |JUST_ANOTHER_ACTION|  |JUST_ANOTHER_ACTION| fbc22a5e-293e-445a-9798-438d161368b4http://schemas.jboss.com/ws/2007/01/jbossesb">urn:jboss/esb/epr/type/jms</jbossesb:type></wsa:ReferenceProperties></wsa:ReplyTo><wsa:MessageID>fbc22a5e-293e-445a-9798-438d161368b4</wsa:MessageID></Header><Context

                    20:13:37,746 INFO  [STDOUT] &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
                    20:13:37,746 INFO  [STDOUT]  ->
                    20:13:37,746 INFO  [STDOUT] org.jboss.soa.esb.message.transport.type: JMS
                    20:13:37,746 INFO  [STDOUT] org.jboss.soa.esb.message.byte.size: 11333
                    20:13:37,746 INFO  [STDOUT] org.jboss.soa.esb.message.time.processed: 0
                    20:13:37,746 INFO  [STDOUT] javax.jms.message.redelivered: false
                    20:13:37,746 INFO  [STDOUT] org.jboss.soa.esb.gateway.original.queue.name: queue/quickstart_exceptions_faults_GW
                    20:13:37,746 INFO  [STDOUT] org.jboss.soa.esb.message.source: PortReference < jms:localhost:1099#queue/quickstart_exceptions_faults_ESB >
                    20:13:37,746 INFO  [STDOUT] jboss.esb:category=MessageCounter,deployment=Quickstart_exceptions_faults.esb,service-category=ExceptionalServices,service-name=ServiceInvokerServiceTime: 1928932
                    20:13:37,746 INFO  [STDOUT] serviceName: ServiceInvokerService
                    20:13:37,746 INFO  [STDOUT]  ---
                    20:13:37,746 INFO  [STDOUT] org.jboss.soa.esb.message.defaultEntry: <Envelope><Header xmlns:wsa="jms:localhost:1099#queue/quickstart_exceptions_faults_GWhttp://schemas.xmlsoap.org/ws/2004/08/addressing"><wsa:To>jms:localhost:1099#queue/quickstart_exceptions_faults_GW</wsa:To><jbossesb:java.naming.factory.initial xmlns:jbossesb="org.jnp.interfaces.NamingContextFactoryhttp://schemas.jboss.com/ws/2007/01/jbossesb">org.jnp.interfaces.NamingContextFactory</jbossesb:java.naming.factory.initial><jbossesb:java.naming.provider.url xmlns:jbossesb="localhost:1099http://schemas.jboss.com/ws/2007/01/jbossesb">localhost:1099</jbossesb:java.naming.provider.url><jbossesb:java.naming.factory.url.pkgs xmlns:jbossesb="org.jnp.interfaceshttp://schemas.jboss.com/ws/2007/01/jbossesb">org.jnp.interfaces</jbossesb:java.naming.factory.url.pkgs><jbossesb:destination-type xmlns:jbossesb="queuehttp://schemas.jboss.com/ws/2007/01/jbossesb">queue</jbossesb:destination-type><jbossesb:destination-name xmlns:jbossesb="queue/quickstart_exceptions_faults_GWhttp://schemas.jboss.com/ws/2007/01/jbossesb">queue/quickstart_exceptions_faults_GW</jbossesb:destination-name><jbossesb:specification-version xmlns:jbossesb="1.1http://schemas.jboss.com/ws/2007/01/jbossesb">1.1</jbossesb:specification-version><jbossesb:connection-factory xmlns:jbossesb="ConnectionFactoryhttp://schemas.jboss.com/ws/2007/01/jbossesb">ConnectionFactory</jbossesb:connection-factory><jbossesb:message-selector xmlns:jbossesb="http://schemas.jboss.com/ws/2007/01/jbossesb">serviceName='ServiceInvokerService'</jbossesb:message-selector><jbossesb:persistent xmlns:jbossesb="truehttp://schemas.jboss.com/ws/2007/01/jbossesb">true</jbossesb:persistent><jbossesb:acknowledge-mode xmlns:jbossesb="AUTO_ACKNOWLEDGEhttp://schemas.jboss.com/ws/2007/01/jbossesb">AUTO_ACKNOWLEDGE</jbossesb:acknowledge-mode><jbossesb:transacted xmlns:jbossesb="falsehttp://schemas.jboss.com/ws/2007/01/jbossesb">false</jbossesb:transacted><jbossesb:type xmlns:jbossesb="urn:jboss/esb/epr/type/jmsjms:localhost:1099#queue/quickstart_exceptions_faults_GW_replyhttp://schemas.jboss.com/ws/2007/01/jbossesb">urn:jboss/esb/epr/type/jms</jbossesb:type><wsa:ReplyTo><wsa:Address>jms:localhost:1099#queue/quickstart_exceptions_faults_GW_reply</wsa:Address><wsa:ReferenceProperties><jbossesb:java.naming.provider.urlfbc22a5e-293e-445a-9798-438d161368b4http://schemas.jboss.com/ws/2007/01/jbossesb">urn:jboss/esb/epr/type/jms</jbossesb:type></wsa:ReferenceProperties></wsa:ReplyTo><wsa:MessageID>fbc22a5e-293e-445a-9798-438d161368b4</wsa:MessageID></Header><Context xmlns:jbossesb="localhost:1099http://schemas.jboss.com/ws/2007/01/jbossesb">localhost:1099</jbossesb:java.naming.provider.url><jbossesb:java.naming.factory.initial xmlns:jbossesb="org.jnp.interfaces.NamingContextFactoryhttp://schemas.jboss.com/ws/2007/01/jbossesb">org.jnp.interfaces.NamingContextFactory</jbossesb:java.naming.factory.initial><jbossesb:java.naming.factory.url.pkgs xmlns:jbossesb="org.jnp.interfaceshttp://schemas.jboss.com/ws/2007/01/jbossesb">org.jnp.interfaces</jbossesb:java.naming.factory.url.pkgs><jbossesb:destination-type xmlns:jbossesb="queuehttp://schemas.jboss.com/ws/2007/01/jbossesb">queue</jbossesb:destination-type><jbossesb:destination-name xmlns:jbossesb="queue/quickstart_exceptions_faults_GW_replyhttp://schemas.jboss.com/ws/2007/01/jbossesb">queue/quickstart_exceptions_faults_GW_reply</jbossesb:destination-name><jbossesb:specification-version xmlns:jbossesb="1.1http://schemas.jboss.com/ws/2007/01/jbossesb">1.1</jbossesb:specification-version><jbossesb:connection-factory xmlns:jbossesb="ConnectionFactoryhttp://schemas.jboss.com/ws/2007/01/jbossesb">ConnectionFactory</jbossesb:connection-factory><jbossesb:message-selector xmlns:jbossesb="http://schemas.jboss.com/ws/2007/01/jbossesb">serviceName='ServiceInvokerService' AND jbossESBresponseUUID='3c68f745-673a-4dc9-9422-35a8e1e8a27c'</jbossesb:message-selector><jbossesb:persistent xmlns:jbossesb="truehttp://schemas.jboss.com/ws/2007/01/jbossesb">true</jbossesb:persistent><jbossesb:acknowledge-mode xmlns:jbossesb="AUTO_ACKNOWLEDGEhttp://schemas.jboss.com/ws/2007/01/jbossesb">AUTO_ACKNOWLEDGE</jbossesb:acknowledge-mode><jbossesb:transacted xmlns:jbossesb="falsehttp://schemas.jboss.com/ws/2007/01/jbossesb">false</jbossesb:transacted><jbossesb:type xmlns:jbossesb="urn:jboss/esb/epr/type/jms /><Body><Content><Key>b3JnLmpib3NzLnNvYS5lc2IubWVzc2FnZS5kZWZhdWx0RW50cnk=</Key><Value><marshalunmarshal><plugin-type>urn:xml/marshalunmarshal/plugin/serialization</plugin-type>rO0ABXQAJ05PIEdhdGV3YXk6IFN5bmMgdy9jYXRjaCBpbiBzZXJ2ZXItc2lkZQ==</marshalunmarshal></Value></Content></Body><Attachment /><Properties><Property><Key>b3JnLmpib3NzLnNvYS5lc2IubWVzc2FnZS5ieXRlLnNpemU=</Key><Value>rO0ABXQABDQxMDA=</Value></Property><Property><Key>b3JnLmpib3NzLnNvYS5lc2IubWVzc2FnZS50aW1lLnByb2Nlc3NlZA==</Key><Value>rO0ABXQAATA=</Value></Property></Properties></Envelope> |JUST_ANOTHER_ACTION|  |JUST_ANOTHER_ACTION|
                    20:13:37,746 INFO  [STDOUT]  <-
                    20:13:47,761 INFO  [ServiceInvoker] Unresponsive EPR: JMSEpr [ PortReference < <wsa:Address jms:localhost:1099#queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.initial : org.jnp.interfaces.NamingContextFactory/>, <wsa:ReferenceProperties jbossesb:java.naming.provider.url : localhost:1099/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.url.pkgs : org.jnp.interfaces/>, <wsa:ReferenceProperties jbossesb:destination-type : queue/>, <wsa:ReferenceProperties jbossesb:destination-name : queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:specification-version : 1.1/>, <wsa:ReferenceProperties jbossesb:connection-factory : ConnectionFactory/>, <wsa:ReferenceProperties jbossesb:message-selector : serviceName='ExceptionCaughtService'/>, <wsa:ReferenceProperties jbossesb:persistent : true/>, <wsa:ReferenceProperties jbossesb:acknowledge-mode : AUTO_ACKNOWLEDGE/>, <wsa:ReferenceProperties jbossesb:transacted : false/>, <wsa:ReferenceProperties jbossesb:type : urn:jboss/esb/epr/type/jms/> > ] for message: header: [  ]
                    20:13:57,762 INFO  [ServiceInvoker] Unresponsive EPR: JMSEpr [ PortReference < <wsa:Address jms:localhost:1099#queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.initial : org.jnp.interfaces.NamingContextFactory/>, <wsa:ReferenceProperties jbossesb:java.naming.provider.url : localhost:1099/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.url.pkgs : org.jnp.interfaces/>, <wsa:ReferenceProperties jbossesb:destination-type : queue/>, <wsa:ReferenceProperties jbossesb:destination-name : queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:specification-version : 1.1/>, <wsa:ReferenceProperties jbossesb:connection-factory : ConnectionFactory/>, <wsa:ReferenceProperties jbossesb:message-selector : serviceName='ServiceInvokerService'/>, <wsa:ReferenceProperties jbossesb:persistent : true/>, <wsa:ReferenceProperties jbossesb:acknowledge-mode : AUTO_ACKNOWLEDGE/>, <wsa:ReferenceProperties jbossesb:transacted : false/>, <wsa:ReferenceProperties jbossesb:type : urn:jboss/esb/epr/type/jms/> > ] for message: header: [  ]
                    20:14:07,856 INFO  [ServiceInvoker] Unresponsive EPR: JMSEpr [ PortReference < <wsa:Address jms:localhost:1099#queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.initial : org.jnp.interfaces.NamingContextFactory/>, <wsa:ReferenceProperties jbossesb:java.naming.provider.url : localhost:1099/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.url.pkgs : org.jnp.interfaces/>, <wsa:ReferenceProperties jbossesb:destination-type : queue/>, <wsa:ReferenceProperties jbossesb:destination-name : queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:specification-version : 1.1/>, <wsa:ReferenceProperties jbossesb:connection-factory : ConnectionFactory/>, <wsa:ReferenceProperties jbossesb:message-selector : serviceName='ServiceInvokerService'/>, <wsa:ReferenceProperties jbossesb:persistent : true/>, <wsa:ReferenceProperties jbossesb:acknowledge-mode : AUTO_ACKNOWLEDGE/>, <wsa:ReferenceProperties jbossesb:transacted : false/>, <wsa:ReferenceProperties jbossesb:type : urn:jboss/esb/epr/type/jms/> > ] for message: header: [  ]
                    20:14:17,857 INFO  [ServiceInvoker] Unresponsive EPR: JMSEpr [ PortReference < <wsa:Address jms:localhost:1099#queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.initial : org.jnp.interfaces.NamingContextFactory/>, <wsa:ReferenceProperties jbossesb:java.naming.provider.url : localhost:1099/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.url.pkgs : org.jnp.interfaces/>, <wsa:ReferenceProperties jbossesb:destination-type : queue/>, <wsa:ReferenceProperties jbossesb:destination-name : queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:specification-version : 1.1/>, <wsa:ReferenceProperties jbossesb:connection-factory : ConnectionFactory/>, <wsa:ReferenceProperties jbossesb:message-selector : serviceName='ExceptionCaughtService'/>, <wsa:ReferenceProperties jbossesb:persistent : true/>, <wsa:ReferenceProperties jbossesb:acknowledge-mode : AUTO_ACKNOWLEDGE/>, <wsa:ReferenceProperties jbossesb:transacted : false/>, <wsa:ReferenceProperties jbossesb:type : urn:jboss/esb/epr/type/jms/> > ] for message: header: [  ]
                    20:14:17,857 INFO  [ServiceInvoker] Delivering message [header: [  ]] to DLQ.
                    20:14:17,857 INFO  [STDOUT] EXCEPTION CAUGHT!!!
                    20:14:17,857 INFO  [STDOUT] &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
                    20:14:17,857 INFO  [STDOUT] JustAnotherAction Body: NO Gateway: Sync w/catch in server-side |JUST_ANOTHER_ACTION|  |JUST_ANOTHER_ACTION|  |JUST_ANOTHER_ACTION|  |JUST_ANOTHER_ACTION|  |JUST_ANOTHER_ACTION|
                    20:14:17,857 INFO  [STDOUT] &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
                    20:14:17,857 INFO  [STDOUT]  ->
                    20:14:17,858 INFO  [STDOUT] org.jboss.soa.esb.message.transport.type: JMS
                    20:14:17,858 INFO  [STDOUT] org.jboss.soa.esb.message.byte.size: 5526
                    20:14:17,858 INFO  [STDOUT] org.jboss.soa.esb.message.time.processed: 0
                    20:14:17,858 INFO  [STDOUT] javax.jms.message.redelivered: false
                    20:14:17,858 INFO  [STDOUT] org.jboss.soa.esb.message.source: PortReference < jms:localhost:1099#queue/quickstart_exceptions_faults_ESB >
                    20:14:17,858 INFO  [STDOUT] jboss.esb:category=MessageCounter,deployment=Quickstart_exceptions_faults.esb,service-category=ExceptionalServices,service-name=ServiceInvokerServiceTime: 1823879
                    20:14:17,858 INFO  [STDOUT] serviceName: ServiceInvokerService
                    20:14:17,858 INFO  [STDOUT]  ---
                    20:14:17,858 INFO  [STDOUT] org.jboss.soa.esb.message.defaultEntry: NO Gateway: Sync w/catch in server-side |JUST_ANOTHER_ACTION|  |JUST_ANOTHER_ACTION|  |JUST_ANOTHER_ACTION|  |JUST_ANOTHER_ACTION|  |JUST_ANOTHER_ACTION|
                    20:14:17,858 INFO  [STDOUT]  <-
                    20:14:27,873 INFO  [ServiceInvoker] Unresponsive EPR: JMSEpr [ PortReference < <wsa:Address jms:localhost:1099#queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.initial : org.jnp.interfaces.NamingContextFactory/>, <wsa:ReferenceProperties jbossesb:java.naming.provider.url : localhost:1099/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.url.pkgs : org.jnp.interfaces/>, <wsa:ReferenceProperties jbossesb:destination-type : queue/>, <wsa:ReferenceProperties jbossesb:destination-name : queue/quickstart_exceptions_faults_ESB/>, <wsa:ReferenceProperties jbossesb:specification-version : 1.1/>, <wsa:ReferenceProperties jbossesb:connection-factory : ConnectionFactory/>, <wsa:ReferenceProperties jbossesb:message-selector : serviceName='ServiceInvokerService'/>, <wsa:ReferenceProperties jbossesb:persistent : true/>, <wsa:ReferenceProperties jbossesb:acknowledge-mode : AUTO_ACKNOWLEDGE/>, <wsa:ReferenceProperties jbossesb:transacted : false/>, <wsa:ReferenceProperties jbossesb:type : urn:jboss/esb/epr/type/jms/> > ] for message: header: [  ]

                    {noformat}

                     

                     

                    For a while (when using the code which is currently commented away in my ServiceInvokerAction) I actually managed to catch the exception (without copying the message properties) and the output in the command terminal window was as I expected it to be but now I suddenly can't get it to work with that code either.

                     

                    1. Do you have any idea of what I am missing?

                    2. Should other types of message data (for example header) also be copied to the new message?

                    3. Should the data of the resulting message from calling serviceInvoker.deliverSync() be copied to the original message or could the resulting message be used to replace the original message (as in the current ServiceInvokeAction code)?

                    4. Is there a way to stop the message from beeing sent over an over again without restarting the server?

                     

                    Message was edited by: Calle Andersson

                    • 7. Re: Is it possible to stop a thrown Exception within an ESB service?
                      h.wolffenbuttel

                      Hi,

                       

                      I'm not exactly sure what goes wrong, but you have to think of a couple of things first:

                       

                      1. Because you have a requestResponse service, you always need to return something

                      2. If you dont want an error to reach your client you have to specify what else to send

                      3. you will need a setup of services that works like :

                       

                      recieve_service containing: recieve_action-> invoker_action

                      action_service contianing: any action you like

                       

                      The recieve service has a queue Q1 and for reply Q2. The action service has a queque Q3 and reply QUEUEU Q4. The Q3 and Q4 are used bij the serviceInvoker you use in your serviceInvokerAction. If you send the original message and not a new copy, the queue information will never point to  Q3 and Q4 which will be a problem since the service invoker of the serviceInvokerAction will never recieve it. The message will return to Q1 instead, so it looks like it is working, but in reality its not.

                       

                      I have a working agent (which you call ServiceInvokerAction) without copying other information, but if you use the headerinformation in a later step, you will have to copy those too, and any other information which is not copied already.

                       

                      If you have a response timeout, you might want to look into the amound of threads your using within the ESB. Further more, you will have to play with the timeout set on your service invoker.

                       

                      To answer your thirt question, ofcourse you need to copy the response, otherwise the original message will be returned.

                       

                       

                      I hope this helps,

                       

                      Regards,

                       

                      Hans

                      • 8. Re: Is it possible to stop a thrown Exception within an ESB service?
                        calleandersson

                        Unless I misunderstands something completely the example in my last post uses the same setup of services as you describe (receive_service = ServiceInvokerService and action_service = ExceptionCaughtService) and the ServiceInvokerService should return something (in this case the message where the text "An unexpected error has been caught in ServiceInvokerAction!!!" is set if an exception is caught when calling serviceInvoker.deliverSync().

                         

                        Regarding the third question, what I meant was if I need to copy the body data from the message returned from serviceInvoker.deliverSync() to the body of 'message' ('message' is the input parameter of the process() method and its the object that is returned from the method) like this:

                        {code:java}

                        Message responseMessage = serviceInvoker.deliverSync(messageToDeliver, 10000);

                        message.getBody().add(responseMessage.getBody().get());

                        return message;

                        {code}

                         

                        Or if it is ok (not messing something up regarding the queues or properties) to return the message returned from serviceInvoker.deliverSync() directly like this:

                        {code:java}

                        return serviceInvoker.deliverSync(messageToDeliver, 10000);

                        {code}

                         

                        I have some questions about the following text that you wrote in your last post:

                        {quote}

                        The recieve service has a queue Q1 and for reply Q2. The action service has a queque Q3 and reply QUEUEU Q4. The Q3 and Q4 are used bij the serviceInvoker you use in your serviceInvokerAction. If you send the original message and not a new copy, the queue information will never point to  Q3 and Q4 which will be a problem since the service invoker of the serviceInvokerAction will never recieve it. The message will return to Q1 instead, so it looks like it is working, but in reality its not.

                        {quote}

                         

                        1. Is it only Q3 and Q4 that could be used by the serviceInvoker (in this case) and when is this set up? Is it when the serviceInvoker is instantiated and the category and name of the action service is used as parameters?

                        2. Where is the queue information you mention stored? I suppose it is somewhere in a Message object (since a new message should be created) but not in the parameters?

                        3. If the serviceInvoker only uses Q3 and Q4, how can the old message be returned/sent to Q1? If it is sent to Q1, this means that an infinite loop has been made (since the whole thing will start all over again)? Correct?

                         

                        Is there a way not having a response timeout (e.g. using -1)? (I assumed you was talking about when using serviceInvoker.deliverSync().) I haven't seen anything about this in the documentation.

                         

                        By the way, in my adjusted exception_fault project there is only one JMS Provider according to this:

                        {code:xml}

                        <providers>

                        <jms-provider connection-factory="ConnectionFactory" name="JBossMQ">

                          <jms-bus busid="LostMessageServiceGW">

                           <jms-message-filter dest-name="queue/quickstart_exceptions_faults_GW" dest-type="QUEUE" selector="serviceName='LostMessageService'"/>

                          </jms-bus>

                          <jms-bus busid="LostMessageServiceESB">

                           <jms-message-filter dest-name="queue/quickstart_exceptions_faults_ESB" dest-type="QUEUE" selector="serviceName='LostMessageService'"/>

                          </jms-bus>

                          <jms-bus busid="ExceptionCaughtServiceGW">

                           <jms-message-filter dest-name="queue/quickstart_exceptions_faults_GW" dest-type="QUEUE" selector="serviceName='ExceptionCaughtService'"/>

                          </jms-bus>

                          <jms-bus busid="ExceptionCaughtServiceESB">

                           <jms-message-filter dest-name="queue/quickstart_exceptions_faults_ESB" dest-type="QUEUE" selector="serviceName='ExceptionCaughtService'"/>

                          </jms-bus>

                          <jms-bus busid="ServiceInvokerServiceGW">

                           <jms-message-filter dest-name="queue/quickstart_exceptions_faults_GW" dest-type="QUEUE" selector="serviceName='ServiceInvokerService'"/>

                          </jms-bus>

                          <jms-bus busid="ServiceInvokerServiceESB">

                           <jms-message-filter dest-name="queue/quickstart_exceptions_faults_ESB" dest-type="QUEUE" selector="serviceName='ServiceInvokerService'"/>

                          </jms-bus>

                        </jms-provider>

                        </providers>

                        {code}

                         

                        As you can see, the dest-name of the jms-message-filter is the same for the gateway channels and likewise for the ESB channels. The selector attribute is used to distinguish calls for the different services. Could this (in combination with my current serviceInvoker usage) have something to do with the repeatedly sent messages that I mentioned in my last post?

                        • 9. Is it possible to stop a thrown Exception within an ESB service?
                          tcunning

                          It's kind of hard to tell what's going on without the full config/action classes.

                           

                          I'd suggest checking out the dead_lettter quickstart.     It does something similar to what you're trying to do, but it's designed to fail because it's sending to a service that doesn't exist.     Maybe there's something in there to help you.

                          • 10. Re: Is it possible to stop a thrown Exception within an ESB service?
                            h.wolffenbuttel

                            First of all, I dont understand all the GW busses. If you define a service you need only to define a GW (gateway) when you have a non ESB aware message you want to recieve with that service. If you are sending messages with the serviceinvoker you are sending ESB-aware messages, so 1 listener will suffice.

                             

                            Second, if you reuse your original message, you wont have any adressing problems because the return location will still be set to the right location.

                             

                            Third, you might want to post your ESB configuration for any further help. Your class implementation of your version of an agent would also be helpfull to see what's going wrong.

                             

                            Fourth, you also might want to look into the sourcecode of the serviceInvoker to understand when and why queue's are set on your message. A serviceInvoker invokes a service, which means that it will drop your message into the Q3 and will wait on Q4 to recieve any answer. Atleast this will be the case if you have requestResponse. Without a response setting, no Q4 will be set on the message nor will it be created by invoking the service.

                             

                            When your message is dropped into Q3 your ESB message aware listener will pick it up and run the actions you have listed for that service. When the actionpipeline is finished (and you have set requestResponse mapping, which is done automatically when you call deliversync) the message will be returned to the reply queue Q4. At that time the serviceInvoker will recieve it's message from that queue and will return it as a result from the deliversync method.The process method which contains the serviceinvoker call will return it's message finally to the reply queue Q2.

                             

                            regards,

                             

                            Hans

                            • 11. Is it possible to stop a thrown Exception within an ESB service?
                              calleandersson

                              I have not had time to look into the ServiceInvoker code yet but I will try to do that as soon as I can.

                               

                              The reason for all the GW busses is that I simply copied from the existing busses (in the exception_fault sample) when creating ServiceInvokerServiceGW and ServiceInvokerServiceESB and there are some functionality for using JMS as well.

                               

                              A few posts ago I described how I had modified the existing quickstart exceptions_faults sample. I have not done any other adjustments to the sample unless the ones I have specified in that post. The rest of the ESB configuration is right there in the sample.

                               

                              I have tested to create a new ESB project (including an exception_handler and an exception_causer service) which basically is based upon the

                              recieve_service/action_service setup mentioned in earlier posts. As far as I can tell everything seems to work as it should in my new project (at least there are no messages sent over and over again) so the problems only exists in the project based upon the exceptions_faults sample.

                               

                              A drawback using the receive_service/action_service setup is that an additional service always has to be created for every real service. Even if the setup is working it seem like an awkward solution. I was hoping there was some other way to handle thrown exceptions (or adjust the response to be returned) in a service where an unexpected exception has occurred.

                              • 12. Is it possible to stop a thrown Exception within an ESB service?
                                h.wolffenbuttel

                                Ah, now I understand, you might want to look at a sollution described here http://community.jboss.org/message/603897#603897

                                It describes throwing a custom exception, which in your case doesnt have to be an exception but a customized reply.

                                 

                                Regards,

                                 

                                Hans

                                • 13. Is it possible to stop a thrown Exception within an ESB service?
                                  calleandersson

                                  I am aware that it is possible to create a custimized reply by throwing an ActionProcessingFaultException (as mentioned in my first posts and in http://community.jboss.org/message/603897#603897). This works fine if I can control when to throw an ActionProcessingFaultException (either by deciding when I think an ActionProcessingFaultException should be thrown or by catching other types of Exceptions and throwing a new ActionProcessingFaultException instead). In custom actions it is easy to implement a try-catch to catch all kinds of Exceptions an throw a new ActionProcessingFaultException. However, the problem is when using predefined actions (e.g. SOAP Proxy Action, Action Validation Action etc.) which throws Exceptions (there is an axample of this in my first post) since there doesn't seem to be any simple way to catch these Exceptions within the same service.

                                  • 14. Re: Is it possible to stop a thrown Exception within an ESB service?
                                    h.wolffenbuttel

                                    so you have already tried to catch the exception (like in the examples) and throw your own ActionProcessingFaultException instead? ( i mean in the action before your exception happens ofcourse).

                                    1 2 Previous Next