0 Replies Latest reply on Jul 28, 2008 4:01 AM by Justin

    Unresponsive EPR when invoking ESB from SLSB (ESB 4.3)

    Justin Newbie

      Hi,

      I'm getting strange behaviour when invoking an ESB from within a SLSB proxied as a web service end point. Typically a number of 'Unresponsive endpoint' messages are received after which a stack trace is generated and the message is finally delivered (in duplicate):

      Trimmed log file

      09:26:39,921 INFO [STDOUT] HelloWorld Hit! FOO
      09:27:00,921 INFO [ServiceInvoker] Unresponsive EPR: JMSEpr [ PortReference < <wsa:Address jms://127.0.0.1:1099/queue/quickstart_
      native_client_esb/>,
      ...
      ..
      09:27:21,015 INFO [ServiceInvoker] Unresponsive EPR: JMSEpr [ PortReference < <wsa:Address jms://127.0.0.1:1099/queue/quickstart_
      native_client_esb/>,
      ...
      ..
      09:27:21,031 INFO [ServiceInvoker] Delivering message ....... to DLQ.
      ...
      ..
      09:27:21,140 INFO [STDOUT] org.jboss.soa.esb.listeners.message.MessageDeliverException: Failed to deliver message ... to Service [MyServiceCategory:MyNa
      tiveClientService]. Check for errors.
      ...
      ..
      09:27:21,140 INFO [STDOUT] org.jboss.soa.esb.listeners.message.MessageDeliverException: Failed to deliver message ... to Service [MyServiceCategory:MyNa
      tiveClientService]. Check for errors.
      ..
      .
      09:27:21,140 INFO [STDOUT] at org.jboss.soa.esb.client.ServiceInvoker.post(ServiceInvoker.java:356)
      09:27:21,140 INFO [STDOUT] at org.jboss.soa.esb.client.ServiceInvoker.deliverSync(ServiceInvoker.java:196)
      09:27:21,140 INFO [STDOUT] at org.jboss.soa.esb.samples.quickstart.nativeclient.webservice.HelloWorldWS.sayHello(HelloWorldWS
      .java:65)
      09:27:21,140 INFO [STDOUT] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      09:27:21,140 INFO [STDOUT] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      09:27:21,140 INFO [STDOUT] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      09:27:21,140 INFO [STDOUT] at java.lang.reflect.Method.invoke(Method.java:585)
      09:27:21,140 INFO [STDOUT] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
      09:27:21,140 INFO [STDOUT] at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
      09:27:21,140 INFO [STDOUT] at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:
      63)
      09:27:21,140 INFO [STDOUT] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
      09:27:21,140 INFO [STDOUT] at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityM
      anagerInterceptor.java:54)
      09:27:21,140 INFO [STDOUT] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
      09:27:21,140 INFO [STDOUT] at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
      09:27:21,140 INFO [STDOUT] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
      09:27:21,140 INFO [STDOUT] at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)
      09:27:21,140 INFO [STDOUT] at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:191)
      09:27:21,140 INFO [STDOUT] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
      09:27:21,140 INFO [STDOUT] at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:95)
      09:27:21,140 INFO [STDOUT] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
      09:27:21,140 INFO [STDOUT] at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:
      62)
      09:27:21,140 INFO [STDOUT] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
      09:27:21,140 INFO [STDOUT] at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)
      09:27:21,140 INFO [STDOUT] at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java
      :110)
      09:27:21,140 INFO [STDOUT] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
      09:27:21,140 INFO [STDOUT] at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46)
      09:27:21,140 INFO [STDOUT] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
      09:27:21,140 INFO [STDOUT] at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
      09:27:21,140 INFO [STDOUT] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
      09:27:21,140 INFO [STDOUT] at org.jboss.wsf.container.jboss42.InvocationHandlerEJB3.invoke(InvocationHandlerEJB3.java:103)
      09:27:21,140 INFO [STDOUT] at org.jboss.ws.core.server.ServiceEndpointInvoker.invoke(ServiceEndpointInvoker.java:220)
      09:27:21,140 INFO [STDOUT] at org.jboss.wsf.stack.jbws.RequestHandlerImpl.processRequest(RequestHandlerImpl.java:408)
      09:27:21,140 INFO [STDOUT] at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleRequest(RequestHandlerImpl.java:272)
      09:27:21,140 INFO [STDOUT] at org.jboss.wsf.stack.jbws.RequestHandlerImpl.doPost(RequestHandlerImpl.java:189)
      09:27:21,140 INFO [STDOUT] at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleHttpRequest(RequestHandlerImpl.java:122)
      09:27:21,156 INFO [STDOUT] at org.jboss.wsf.stack.jbws.EndpointServlet.service(EndpointServlet.java:84)
      09:27:21,156 INFO [STDOUT] at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
      09:27:21,156 INFO [STDOUT] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:29
      0)
      09:27:21,156 INFO [STDOUT] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      09:27:21,156 INFO [STDOUT] at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
      09:27:21,156 INFO [STDOUT] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:23
      5)
      09:27:21,156 INFO [STDOUT] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      09:27:21,156 INFO [STDOUT] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
      09:27:21,156 INFO [STDOUT] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
      09:27:21,156 INFO [STDOUT] at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179
      )
      09:27:21,156 INFO [STDOUT] at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
      09:27:21,156 INFO [STDOUT] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
      09:27:21,156 INFO [STDOUT] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
      09:27:21,156 INFO [STDOUT] at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
      09:27:21,156 INFO [STDOUT] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
      09:27:21,156 INFO [STDOUT] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
      09:27:21,156 INFO [STDOUT] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
      09:27:21,156 INFO [STDOUT] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583
      )
      09:27:21,156 INFO [STDOUT] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
      ...
      09:27:21,156 INFO [STDOUT] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
      09:27:21,156 INFO [STDOUT] at java.lang.Thread.run(Thread.java:595)
      09:27:21,234 INFO [STDOUT]
      &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
      09:27:21,250 INFO [STDOUT] Body: FOO
      09:27:21,250 INFO [STDOUT] &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
      09:27:21,250 INFO [STDOUT]
      &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
      09:27:21,250 INFO [STDOUT] Body: Hello From ESB MyAction: FOO
      09:27:21,250 INFO [STDOUT] &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
      09:27:21,328 INFO [STDOUT]
      &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
      09:27:21,328 INFO [STDOUT] Body: FOO
      09:27:21,328 INFO [STDOUT] &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
      09:27:21,406 INFO [STDOUT]
      &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
      09:27:21,406 INFO [STDOUT] Body: Hello From ESB MyAction: FOO
      09:27:21,406 INFO [STDOUT] &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
      
      



      Configuration as follows:

      jdk 1.5.0_14
      jboss-4.2.2.GA
      jboss-messaging-1.4.0.SP3
      jbossesb-4.3.GA
      jboss-remoting-2_4_0_GA
      jbossws-native-2.0.3.GA

      I'm using the all JBoss configuration

      The easiest way to demonstrate this is to take the samples/quickstarts/native_client example and to change the web service (HelloWorldWS) to a stateless session bean with web service annotations and package it as an ejb-jar file inside the ear. Everything else remains the same. Just be sure that the ejb-jar file is not duplicated inside the .esb archive.

      The SLSB is as follows:
      import javax.ejb.Remote;
      import javax.ejb.Stateless;
      import javax.jws.WebService;
      import javax.jws.soap.SOAPBinding;
      
      import org.jboss.soa.esb.client.ServiceInvoker;
      import org.jboss.soa.esb.message.Message;
      import org.jboss.soa.esb.message.format.MessageFactory;
      import org.jboss.soa.esb.message.format.MessageType;
      
      @Stateless
      @Remote(IHelloWorldWS.class)
      @WebService
      @SOAPBinding(
       style=SOAPBinding.Style.RPC,
       use=SOAPBinding.Use.LITERAL
       )
      public class HelloWorldWS implements IHelloWorldWS {
      
       public String sayHello(String toWhom) {
       .. and then everything else as per the demo
       }
      }
      


      The modified build file which ships with the example looks like:

      <target name="makewar" description="make war">
      
       <!-- Compile... -->
       <mkdir dir="${war.build.dir}" />
       <javac srcdir="war/src" destdir="${war.build.dir}" debug="true">
       <classpath>
       <path refid="compile-classpath" />
       <fileset dir="war/lib/ext" includes="*.jar" />
       </classpath>
       </javac>
      
       <jar destfile="build/qs-ejb.jar">
       <zipfileset dir="${war.build.dir}" includes="**/*.class" />
       <zipfileset dir="${basedir}" includes="juddi.properties" />
       </jar>
      
       <!-- ear... -->
       <jar destfile="build/qs.ear">
       <zipfileset dir="build" includes="qs-ejb.jar" />
       <zipfileset dir="${basedir}/resources/ear" includes="META-INF/**" />
       </jar>
      
       </target>
      
       <target name="deploy-ear" depends="prepare-deployment">
       <copy todir="${org.jboss.esb.server.deploy.dir}"
       file="${build.dir}/qs.ear"/>
       </target>
      
       <target name="undeploy-ear" depends="dependencies">
       <delete
       file="${org.jboss.esb.server.deploy.dir}/qs.ear"/>
       </target>
      



      I can provide a full stack trace/error log and the example in source code/binary if required.

      Any ideas?

      Thanks,
      Justin Walsh