8 Replies Latest reply on Jul 5, 2010 4:37 AM by kconner

    Problems with ServiceInvoker (too slow and deliverSync does not work)

    veraniego

      Hi,

       

      I'm using JBoss ESB Server 4.8 and I've deployed an external webservice exposed in my ESB through SOAPProxy.

       

      I'm testing it using ServiceInvoker from the Jboss API,,, and that works fine when I use the deliverAsync method, I get the right response but... after a few minutes!!!

       

      And when I try to use deliverSync I get this response:

       

      org.jboss.soa.esb.listeners.message.MissingServiceException: Registry details for service [SOAP:ContadorWS] could not be determined from the registry.
      at org.jboss.soa.esb.client.ServiceInvoker.post(ServiceInvoker.java:348)
      at org.jboss.soa.esb.client.ServiceInvoker.deliverSync(ServiceInvoker.java:219)
      at org.jboss.soa.esb.myclient.SendEsbMessage.sendMessage(SendEsbMessage.java:52)
      at org.jboss.soa.esb.myclient.SendEsbMessage.main(SendEsbMessage.java:67)

       

      Any idea of this??

       

      Thank you!!

        • 1. Re: Problems with ServiceInvoker (too slow and deliverSync does not work)
          asif_phx

          Fran,

          Could you also post ESB configuration file (jboss-esb.xml)?


          Also , is the client running in the same vm for both deliverSync and deliverAsync cases?

           

          asif

          • 2. Re: Problems with ServiceInvoker (too slow and deliverSync does not work)
            veraniego

            Hi Asif,

             

            This is my jboss-esb.xml:

             


            <services>

            <service category="SOAP" description="WS Contador" invmScope="GLOBAL" name="ContadorWS">
            <listeners>
                 <http-gateway name="Proxy_Basic-GwListener"/>

            </listeners>
            <actions mep="RequestResponse">

                 <action name="echo-request">
                      <property name="message" value="Message before SOAPProxy"/>
                  </action>
                  <action name="proxy">
                      <property name="wsdl" value="http://localhost:8080/ContadorWS/services/Contador?wsdl"/>
                       <property name="endpointUrl" value="http://localhost:8080/ContadorWS/services/Contador"/>
                  </action>
                  <action name="echo-response">
                       <property name="message" value="Message after SOAPProxy"/>
                  </action>

            </actions>

             

            And both client and Jboss ESB are running in the same machine and vm (jdk 6), and Tomcat for the service.

             

            Thank you very much in advance!

            • 3. Re: Problems with ServiceInvoker (too slow and deliverSync does not work)
              asif_phx

              Fran,

               

              The response time in "minutes" for the async messages seems that the EPR is unresponsive.
              I am just wondering if ServiceInvoker removes this EPR from registry thinking its a Dead EPR.
              You might try debugging ServiceInvoker to see what’s going on.

               

              asif

              • 4. Re: Problems with ServiceInvoker (too slow and deliverSync does not work)
                veraniego

                Could it be something realted with conf of my client??

                 

                I've attached my uddi.xml from the client app.

                 

                I have set the RMI Transport, and when I change to VM transport this is what I get:

                 

                Exception in thread "main"

                org.jboss.soa.esb.listeners.message.MessageDeliverException: org.apache.ws.scout.transport.TransportException: java.lang.Exception

                at org.jboss.soa.esb.client.ServiceInvoker.loadServiceClusterInfo(

                ServiceInvoker.java:545)

                at org.jboss.soa.esb.client.ServiceInvoker.<init>(

                ServiceInvoker.java:174)

                at org.jboss.soa.esb.client.ServiceInvoker.<init>(

                ServiceInvoker.java:155)

                at org.jboss.soa.esb.client.ServiceInvoker.<init>(

                ServiceInvoker.java:197)

                at org.jboss.soa.esb.myclient.SendEsbMessage.sendMessage(

                SendEsbMessage.java:61)

                at org.jboss.soa.esb.myclient.SendEsbMessage.main(

                SendEsbMessage.java:94)

                Caused by:

                org.jboss.soa.esb.services.registry.RegistryException: org.apache.ws.scout.transport.TransportException: java.lang.Exception

                at org.jboss.internal.soa.esb.services.registry.JAXRRegistryImpl.findEPRs(

                JAXRRegistryImpl.java:348)

                at org.jboss.internal.soa.esb.services.registry.InVMRegistryInterceptor.findEPRs(

                InVMRegistryInterceptor.java:85)

                at org.jboss.soa.esb.services.registry.RegistryFactory$HeadRegistryInterceptor.findEPRs(

                RegistryFactory.java:229)

                at org.jboss.soa.esb.listeners.RegistryUtil.getEprs(

                RegistryUtil.java:226)

                at org.jboss.soa.esb.client.ServiceInvoker.loadServiceClusterInfo(

                ServiceInvoker.java:532)

                ... 5 more

                Caused by:

                javax.xml.registry.JAXRException: org.apache.ws.scout.transport.TransportException: java.lang.Exception

                at org.apache.ws.scout.registry.BusinessQueryManagerV3Impl.findConcepts(

                BusinessQueryManagerV3Impl.java:516)

                at org.jboss.internal.soa.esb.services.registry.JAXRRegistryImpl.getJBossESBTModel(

                JAXRRegistryImpl.java:653)

                at org.jboss.internal.soa.esb.services.registry.JAXRRegistryImpl.findEPRs(

                JAXRRegistryImpl.java:307)

                ... 9 more

                 

                 

                 

                 

                • 5. Re: Problems with ServiceInvoker (too slow and deliverSync does not work)
                  asif_phx

                  Fran,

                  I dont think you would need "uddi.xml" if the client is running in the same vm. The client uses jbossesb.sar/esb.juddi.client.xml  ( which is converted at runtime  to ./tmp/uddi.xml) to discover services.

                   

                  Try removing "uddi.xml" from the classpath.

                   

                  asif

                  • 6. Re: Problems with ServiceInvoker (too slow and deliverSync does not work)
                    veraniego

                    Hi Asif,

                     

                    I've tried removing uddi.xml from classpath but this is the exception that I get:

                     

                    Exception in thread "main" org.jboss.soa.esb.listeners.message.MessageDeliverException: org.apache.ws.scout.transport.TransportException: java.lang.Exception: Cannot locate configuration source META-INF/uddi.xml
                    at org.jboss.soa.esb.client.ServiceInvoker.loadServiceClusterInfo(ServiceInvoker.java:545)
                    at org.jboss.soa.esb.client.ServiceInvoker.<init>(ServiceInvoker.java:174)
                    at org.jboss.soa.esb.client.ServiceInvoker.<init>(ServiceInvoker.java:155)
                    at org.jboss.soa.esb.client.ServiceInvoker.<init>(ServiceInvoker.java:197)
                    at org.jboss.soa.esb.myclient.SendEsbMessage.sendMessage(SendEsbMessage.java:61)
                    at org.jboss.soa.esb.myclient.SendEsbMessage.main(SendEsbMessage.java:94)
                    Caused by: org.jboss.soa.esb.services.registry.RegistryException: org.apache.ws.scout.transport.TransportException: java.lang.Exception: Cannot locate configuration source META-INF/uddi.xml
                    at org.jboss.internal.soa.esb.services.registry.JAXRRegistryImpl.findEPRs(JAXRRegistryImpl.java:348)
                    at org.jboss.internal.soa.esb.services.registry.InVMRegistryInterceptor.findEPRs(InVMRegistryInterceptor.java:85)
                    at org.jboss.soa.esb.services.registry.RegistryFactory$HeadRegistryInterceptor.findEPRs(RegistryFactory.java:229)
                    at org.jboss.soa.esb.listeners.RegistryUtil.getEprs(RegistryUtil.java:226)
                    at org.jboss.soa.esb.client.ServiceInvoker.loadServiceClusterInfo(ServiceInvoker.java:532)
                    ... 5 more
                    Caused by: javax.xml.registry.JAXRException: org.apache.ws.scout.transport.TransportException: java.lang.Exception: Cannot locate configuration source META-INF/uddi.xml
                    at org.apache.ws.scout.registry.BusinessQueryManagerV3Impl.findConcepts(BusinessQueryManagerV3Impl.java:516)
                    at org.jboss.internal.soa.esb.services.registry.JAXRRegistryImpl.getJBossESBTModel(JAXRRegistryImpl.java:653)
                    at org.jboss.internal.soa.esb.services.registry.JAXRRegistryImpl.findEPRs(JAXRRegistryImpl.java:307)
                    ... 9 more

                     

                    And when I put jbossesb.sar/esb.juddi.client.xml as uddi.xml in my classpath this is what I get:

                     

                    Exception in thread "main" org.jboss.soa.esb.listeners.message.MessageDeliverException: org.apache.ws.scout.transport.TransportException: java.lang.Exception: Transport implementation not yet initialised
                    at org.jboss.soa.esb.client.ServiceInvoker.loadServiceClusterInfo(ServiceInvoker.java:545)
                    at org.jboss.soa.esb.client.ServiceInvoker.<init>(ServiceInvoker.java:174)
                    at org.jboss.soa.esb.client.ServiceInvoker.<init>(ServiceInvoker.java:155)
                    at org.jboss.soa.esb.client.ServiceInvoker.<init>(ServiceInvoker.java:197)
                    at org.jboss.soa.esb.myclient.SendEsbMessage.sendMessage(SendEsbMessage.java:61)
                    at org.jboss.soa.esb.myclient.SendEsbMessage.main(SendEsbMessage.java:94)
                    Caused by: org.jboss.soa.esb.services.registry.RegistryException: org.apache.ws.scout.transport.TransportException: java.lang.Exception: Transport implementation not yet initialised
                    at org.jboss.internal.soa.esb.services.registry.JAXRRegistryImpl.findEPRs(JAXRRegistryImpl.java:348)
                    at org.jboss.internal.soa.esb.services.registry.InVMRegistryInterceptor.findEPRs(InVMRegistryInterceptor.java:85)
                    at org.jboss.soa.esb.services.registry.RegistryFactory$HeadRegistryInterceptor.findEPRs(RegistryFactory.java:229)
                    at org.jboss.soa.esb.listeners.RegistryUtil.getEprs(RegistryUtil.java:226)
                    at org.jboss.soa.esb.client.ServiceInvoker.loadServiceClusterInfo(ServiceInvoker.java:532)
                    ... 5 more
                    Caused by: javax.xml.registry.JAXRException: org.apache.ws.scout.transport.TransportException: java.lang.Exception: Transport implementation not yet initialised
                    at org.apache.ws.scout.registry.BusinessQueryManagerV3Impl.findConcepts(BusinessQueryManagerV3Impl.java:516)
                    at org.jboss.internal.soa.esb.services.registry.JAXRRegistryImpl.getJBossESBTModel(JAXRRegistryImpl.java:653)
                    at org.jboss.internal.soa.esb.services.registry.JAXRRegistryImpl.findEPRs(JAXRRegistryImpl.java:307)
                    ... 9 more

                     

                    Thank you!!

                    • 7. Re: Problems with ServiceInvoker (too slow and deliverSync does not work)
                      asif_phx

                      Fran,

                      I think its a configuration issue.

                      How you are packaging client classes? are they part of esb archive (.esb)?

                      May be you can upload esb archive and client classes..

                       

                      asif

                      • 8. Re: Problems with ServiceInvoker (too slow and deliverSync does not work)
                        kconner

                        It sounds as if the configuration of your client in wrong.

                         

                        What is likely to be happening in the deliverAsync scenario is the following.

                         

                        1. Attempt is made to deliver message asynchronously on the client
                        2. Attempt fails, resulting in the message being store in the message store for redelivery
                        3. Server periodically checks for redelivery messages in the message store, finding original client message
                        4. Server then delivers the message to the service.

                         

                        This would explain the delay you are seeing and also why it appears to work with async and not sync.

                         

                        Kev