Unresponsive EPR when invoking ESB from SLSB (ESB 4.3)
justinwalsh Jul 28, 2008 4:01 AMHi,
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