2 Replies Latest reply on Apr 4, 2013 4:21 PM by pugnatorr

    No fault address defined for fault message

    pugnatorr

      Since I started use message selector in my <jms-message-filter I'm getting:

       

      [ActionProcessingPipeline] No fault address defined for fault message! To: JMSEpr [ PortReference < <wsa:Address jms:localhost:1099#queue/sgn_finance_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:max-xa-sessions-per-connection : 50/>, <wsa:ReferenceProperties jbossesb:destination-type : queue/>, <wsa:ReferenceProperties jbossesb:destination-name : queue/sgn_finance_esb/>, <wsa:ReferenceProperties jbossesb:specification-version : 1.1/>, <wsa:ReferenceProperties jbossesb:connection-factory : XAConnectionFactory/>, <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/> > ] MessageID: 83450da3-9d60-4eeb-8c06-f73e5739af86 RelatesTo: jms:correlationID#83450da3-9d60-4eeb-8c06-f73e5739af86

       

      Sometimes, if I send 5 jms messages 3 are executed and 2 show me No fault address defined for fault message.

      What could be wrong ? I'm using esb4.9 e jboss 5.01

       

      jboss-esb.xml

                  <jms-bus busid="financeEsbChannel">

                      <jms-message-filter dest-name="queue/sgn_finance_esb" dest-type="QUEUE" />

                  </jms-bus>

       

                  <jms-bus busid="financeGwChannel">

                      <jms-message-filter dest-name="queue/sgn_finance_gw" dest-type="QUEUE" />

                  </jms-bus>

       

                  <jms-bus busid="discountEsbChannel">

                      <jms-message-filter selector="serviceName='discountService'" dest-name="queue/sgn_finance_esb"

                          dest-type="QUEUE" />

                  </jms-bus>

       

                  <jms-bus busid="discountGwChannel">

                      <jms-message-filter selector="serviceName='discountService'" dest-name="queue/sgn_finance_gw"

                          dest-type="QUEUE" />

                  </jms-bus>

       

       

              <service category="financeCategory" description="WS Frontend speaks natively to the ESB" name="financeService">

                  <listeners>

                      <jms-listener busidref="financeGwChannel" is-gateway="true" maxThreads="1" name="gw-finance" />

                      <jbr-listener busidref="Http-finance" is-gateway="true" maxThreads="1" name="Http-finance" />

                      <jms-listener busidref="financeEsbChannel" maxThreads="1" name="esb-finance" />

                  </listeners>

                  <actions>

                      <action class="org.jboss.soa.esb.actions.soap.SOAPProcessor" name="JBossWSAdapter">

                          <property name="jbossws-endpoint" value="FinanceWS" />

                      </action>

                  </actions>

              </service>

       

              <service category="discountCategory" description="discount service" name="discountService">

                  <listeners>

                      <jms-listener busidref="discountGwChannel" is-gateway="true" maxThreads="1" name="JMS-ESBListener-discount" />

                      <jms-listener busidref="discountEsbChannel" maxThreads="1" name="JMS-GWListener-discount" />

                  </listeners>

                  <actions mep="OneWay">

                      <action class="my.package.action.FinanceAction" name="FinanceAction" process="sendDiscount" />

                  </actions>

              </service>

       

      deployment.xml

          <depends>jboss.esb.integracao.destination:service=Queue,name=sgn_finance_esb</depends>

          <depends>jboss.esb.integracao.destination:service=Queue,name=sgn_finance_esb_reply</depends>

          <depends>jboss.esb.integracao.destination:service=Queue,name=sgn_finance_gw</depends>

        • 1. Re: No fault address defined for fault message
          tcunning

          No fault address defined for fault message means there's an exception underneath that's not getting passed because you don't have a fault message address defined.       Can you change your log4j settings to DEBUG so that you can see the exception?

          • 2. Re: No fault address defined for fault message
            pugnatorr

            I created a new jms queue and the message stopped

             

                        <jms-bus busid="financeEsbChannel">

                            <jms-message-filter dest-name="queue/sgn_finance_WS_esb" dest-type="QUEUE" />

                        </jms-bus>

             

                        <jms-bus busid="financeGwChannel">

                            <jms-message-filter dest-name="queue/sgn_finance_WS_gw" dest-type="QUEUE" />

                        </jms-bus>

            ---------------------------------- ---------------------------------- ---------------------------------- ---------------------------------- ---------------------------------- ----------------------------------

                      

            I have another question. I'm trying to define the fault message based on this post https://community.jboss.org/message/505715#505715

             

            But I'm not sure what a really have to do inside the populateMessage(). I didn't get any error, but is it enough and trustable ?

             

             

             

            public class MessageComposerImpl extends AbstractMessageComposer<Object> {

             

                private MessagePayloadProxy payloadProxy;

                private ConfigTree config;

                private ESBPropertiesSetter esbPropertiesStrategy = new DefaultESBPropertiesSetter();

               

                public MessageComposerImpl(){

                   

                }

             

                public MessageComposerImpl(ConfigTree config) {

                    this.config = config;

                    payloadProxy = new MessagePayloadProxy(config);

                }

             

                @Override

                protected void populateMessage(Message message, Object messagePayload) throws MessageDeliverException {

                    try {

                        ObjectMessageProxy messageProxy = (ObjectMessageProxy) messagePayload;

                        javax.jms.Message jmsMessage = (javax.jms.Message) messagePayload;

                

             

                        Object payload = messageProxy.getObject();

                        payloadProxy.setPayload(message, payload);

                       

                        esbPropertiesStrategy.setPropertiesFromJMSMessage(jmsMessage, message);

                        message.getHeader().getCall().setFaultTo(new LogicalEPR("faultCategory", "faultService"));

             

                    } catch (JMSException e) {

                        e.printStackTrace();

                    }

                }

            }