1 Reply Latest reply on Feb 12, 2013 6:18 PM by max010

    Migrate EAP5 to JBoss7 - remote invocation error

    max010

      Hi this is my scenario,

       

      I am trying to migrate an app from JBoss5 to JBoss7.

       

      I am using jboss-as-7.1.1.Final.

       

      The error I am getting is:

       

      No EJB receiver available for handling [appName:,modulename:myapp-ejb,distinctname:] combination for invocation context org.jboss.ejb.client.EJBClientInvocationContext@6b9bb4bb

                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]

       

      I have looked at serveral discussions with the same error message but I just cant figure out what I am doing wrong.

       

      In the standalone/deployments directory I have only one myapp.war. I do not deploy an .ear file. I have a dependency (myapp-ejb.jar) deployed as a module.

       

      I have followed the instructions from https://docs.jboss.org/author/display/AS71/How+do+I+migrate+my+application+from+AS5+or+AS6+to+AS7 in section "Migrate EAP 5 Deployed Applications That Make Remote Invocations to AS 7".

       

      SERVER

      In the myapp-ejb.jar I have a bunch of JNDI names like:

       

      public static final String ACCOUNT_REMOTE = "ejb:/myapp-ejb//AccountBean!com.company.myapp.ejb.account.AccountRemote";

       

      The JNDI lookup is done from the client by invoking this static method which is defined in myapp-ejb.jar:

       

      public static AccountRemote getAccountRemote() throws NamingException {

                          if (accountRemote == null){

                                         InitialContext ic = new InitialContext();

                                         Object ref = ic.lookup(JNDINames.ACCOUNT_REMOTE);

                                         accountRemote = (AccountRemote) PortableRemoteObject.narrow(ref, AccountRemote.class);

                          }

                          return accountRemote;

      }

       

      All remote interfaces are for stateless EJB like:

       

      @Stateless

      @Remote(AccountRemote.class)

      public class AccountBean implements AccountRemote {

       

      CLIENT

      From the myapp.war I make a remote invocation to the myapp-ejb.jar using the above static method getAccountRemote().

      In the myapp.war/WEB-INF directory I have added a jndi.properties and a jboss-ejb-client.properties.

       

      The jndi.properties contains only one value:

      java.naming.factory.url.pkgs=org.jboss.ejb.client.naming

       

      The jboss-ejb-client.properties contains:

      remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false

       

      remote.connections=default

       

      remote.connection.default.host=localhost

      remote.connection.default.port=4447

      remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false

       

      I have removed the security realm on remoting from the standalone.xml:

       

      <subsystem xmlns="urn:jboss:domain:remoting:1.1">

                <connector name="remoting-connector" socket-binding="remoting" />

      </subsystem>

       

      I have added the JBOSS_HOME/bin/client/jboss-client.jar to the myapp.war/WEB-INF/lib.

       

      The application deploys succesfully without any errors but when I launch localhost:8080 I get the No EJB receiver available for handling error.

       

      Does anyone knows what I have missed?  Any suggestions?

       

      Thanks in advance.