3 Replies Latest reply on Feb 7, 2013 10:20 AM by john doe

    Remote EJB Invocation error

    john doe Newbie

      I followed this guide: https://docs.jboss.org/author/display/AS71/EJB+invocations+from+a+remote+server+instance

       

      I am running JBoss AS 7.1.1.Final. I have remote EJB invocation working on my localhost to a remote server through a WAR, but when I deploy that WAR to a remote client connecting to the same remote server, I get the following error.  The standalone.xml on the remote client is an exact copy of my working localhost.

       

      When I connect on the localhost, I see this handhskae in the logs, on the remote client I don't see it.

       

      17:39:04,123 INFO  [org.jboss.ejb.client.remoting.VersionReceiver] (Remoting "tcg-developer-macbook-pro" task-1) Received server version 1 and marshalling strategies [river]
      17:39:04,147 INFO  [org.jboss.ejb.client.remoting.RemotingConnectionEJBReceiver] (MSC service thread 1-1) Successful version handshake completed for receiver context EJBReceiverContext{clientContext=org.jboss.ejb.client.EJBClientContext@58e4d7f7, receiver=Remoting connection EJB receiver [connection=Remoting connection <5e4c689e>,channel=jboss.ejb,nodename=localhost]} on channel Channel ID c999bdc3 (outbound) of Remoting connection 173fa2d5 to 172.16.0.246/172.16.0.246:4447

       

       

      12:05:58,846 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/VoipFacadeTesterWeb].[jsp]] (http--0.0.0.0-8080-12) Servlet.service() for servlet jsp threw exception: java.lang.IllegalStateException: No EJB receiver available for handling [appName:VoIPServiceEAR,modulename:VoIPService,distinctname:] combination for invocation context org.jboss.ejb.client.EJBClientInvocationContext@6422d556

              at org.jboss.ejb.client.EJBClientContext.requireEJBReceiver(EJBClientContext.java:584) [jboss-ejb-client-1.0.5.Final.jar:1.0.5.Final]

              at org.jboss.ejb.client.ReceiverInterceptor.handleInvocation(ReceiverInterceptor.java:119) [jboss-ejb-client-1.0.5.Final.jar:1.0.5.Final]

              at org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:181) [jboss-ejb-client-1.0.5.Final.jar:1.0.5.Final]

              at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:136) [jboss-ejb-client-1.0.5.Final.jar:1.0.5.Final]

              at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:121) [jboss-ejb-client-1.0.5.Final.jar:1.0.5.Final]

              at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:104) [jboss-ejb-client-1.0.5.Final.jar:1.0.5.Final]

              at $Proxy12.getPricingPlans(Unknown Source)     at org.apache.jsp.index_jsp._jspService(index_jsp.java:100)

              at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) [jbossweb-7.0.13.Final.jar:]

              at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]

              at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369) [jbossweb-7.0.13.Final.jar:]

              at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:326) [jbossweb-7.0.13.Final.jar:]

              at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:253) [jbossweb-7.0.13.Final.jar:]        at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]

              at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]

              at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]

              at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]

              at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]

              at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]

              at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]

              at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]

              at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]

              at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]

              at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]

              at java.lang.Thread.run(Thread.java:636) [rt.jar:1.6.0_20]

       

      Thanks in advance.

        • 1. Re: Remote EJB Invocation error
          john doe Newbie

          Found the problem.

          Added "-Djboss.node.name=[nodename]" to the server startup command.

          Even though the servers are on separate machines, this worked.

          • 2. Re: Remote EJB Invocation error
            jaikiran pai Master

            john doe wrote:

             

            Found the problem.

            Added "-Djboss.node.name=[nodename]" to the server startup command.

            Even though the servers are on separate machines, this worked.

            If the machines are on 2 separate machines but somehow end up having the same jboss.node.name, then yes adding a unique value to the startup makes sense. However, what you need to figure out is if that's indeed the case and if yes, why (it might be a valid reason). One way to check it is print out the System.getProperty("jboss.node.name") from within your application and see what it is or even check the admin console (which I think displays those values).

            • 3. Re: Remote EJB Invocation error
              john doe Newbie

              Jaikiran,

               

              The 2 machines were clones of each other. That could explain how they would get the same node name.

               

              Thanks.