title: Exception in thread "main" java.lang.IllegalStateException: No EJB receiver available for handling -- jboss-as-7.1.1.Final
body: <p>I'm writing a simple ejb application. Deployment succeeds, but when I try to access the method define in the interface the following exception is thrown:</p>
  
  <pre><code>org.jboss.ejb.client.EJBClient &lt;clinit&gt;
  INFO: JBoss EJB Client version 1.0.5.Final
  Exception in thread "main" java.lang.IllegalStateException: No EJB receiver available for handling [appName:,modulename:HelloWorldSessionBean,distinctname:] combination for invocation context org.jboss.ejb.client.EJBClientInvocationContext@2cc5c76c
      at org.jboss.ejb.client.EJBClientContext.requireEJBReceiver(EJBClientContext.java:584)
      at org.jboss.ejb.client.ReceiverInterceptor.handleInvocation(ReceiverInterceptor.java:119)
      at org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:181)
      at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:136)
      at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:121)
      at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:104)
      at com.sun.proxy.$Proxy0.sayHello(Unknown Source)
      at com.ibytecode.client.EJBApplicationClient.main(EJBApplicationClient.java:16)
  </code></pre>
  
  <p>The bean is as follows:</p>
  
  <pre><code>package com.ibytecode.businesslogic;
  
  import com.ibytecode.business.HelloWorld;
  
  import javax.ejb.Stateful;
  
  @Stateful
  public class HelloWorldBean implements HelloWorld {
      public HelloWorldBean() {
      }
  
      public String sayHello() {
          return "Hello World !!!";
      }
  }
  </code></pre>
  
  <p>The interface:</p>
  
  <pre><code>package com.ibytecode.business;
  import javax.ejb.Remote;
  
  @Remote
  public interface HelloWorld {
      public String sayHello();
  }
  </code></pre>
  
  <p>I also have a class that establishes the server context and is used by the client for rmi</p>
  
  <pre><code>import java.util.Properties;
  import javax.naming.Context;
  import javax.naming.InitialContext;
  import javax.naming.NamingException;
  
  public class ClientUtility {
  
      private static Context initialContext;
  
      private static final String PKG_INTERFACES = "org.jboss.ejb.client.naming";
  
      public static Context getInitialContext() throws NamingException {
          if (initialContext == null) {
              Properties properties = new Properties();
              properties.put(Context.URL_PKG_PREFIXES, PKG_INTERFACES);
              // This should fix JNDI issues
              properties.put("jboss.naming.client.ejb.context", true);
              initialContext = new InitialContext(properties);
          }
          return initialContext;
      }
  }
  </code></pre>
  
  <p>The client that accesses the bean is:</p>
  
  <pre><code>package com.ibytecode.client;
  
  import javax.naming.Context;
  import javax.naming.NamingException;
  
  import com.ibytecode.business.HelloWorld;
  import com.ibytecode.businesslogic.HelloWorldBean;
  import com.ibytecode.clientutility.ClientUtility;
  
  
  
  public class EJBApplicationClient {
  
      public static void main(String[] args) {
          HelloWorld bean = doLookup();
          System.out.println(bean.sayHello()); // 4. Call business logic
      }
  
      private static HelloWorld doLookup() {
          Context context = null;
          HelloWorld bean = null;
          try {
              // 1. Obtaining Context
              context = ClientUtility.getInitialContext();
              // 2. Generate JNDI Lookup name
              String lookupName = getLookupName();
              // 3. Lookup and cast
              bean = (HelloWorld) context.lookup(lookupName);
  
          } catch (NamingException e) {
              e.printStackTrace();
          }
          return bean;
      }
  
      private static String getLookupName() {
  /*
  The app name is the EAR name of the deployed EJB without .ear suffix.
  Since we haven't deployed the application as a .ear,
  the app name for us will be an empty string
  */
          String appName = "";
  
          /* The module name is the JAR name of the deployed EJB
          without the .jar suffix.
          */
          String moduleName = "HelloWorldSessionBean";
  
  /*AS7 allows each deployment to have an (optional) distinct name.
  This can be an empty string if distinct name is not specified.
  */
          String distinctName = "";
  
          // The EJB bean implementation class name
          String beanName = HelloWorldBean.class.getSimpleName();
  
          // Fully qualified remote interface name
          final String interfaceName = HelloWorld.class.getName();
  
          // Create a look up string name
          String name = "ejb:" + appName + "/" + moduleName + "/" +
              distinctName    + "/" + beanName + "!" + interfaceName;
  
          System.out.println("Lookup name is: " + name);
          return name;
      }
  }
  </code></pre>
  
  <p>My jboss-ejb-client.properties is:</p>
  
  <pre><code>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
  </code></pre>
  
  <p>The server logs upon deployment are as follows:</p>
  
  <pre><code>15:18:51,487 INFO  [org.jboss.modules] JBoss Modules version 1.1.1.GA
  15:18:51,872 INFO  [org.jboss.msc] JBoss MSC version 1.0.2.GA
  15:18:51,973 INFO  [org.jboss.as] JBAS015899: JBoss AS 7.1.1.Final "Brontes" starting
  15:18:53,282 INFO  [org.jboss.as.server] JBAS015888: Creating http management service using socket-binding (management-http)
  15:18:53,282 INFO  [org.xnio] XNIO Version 3.0.3.GA
  15:18:53,299 INFO  [org.xnio.nio] XNIO NIO Implementation Version 3.0.3.GA
  15:18:53,311 INFO  [org.jboss.remoting] JBoss Remoting version 3.2.3.GA
  15:18:53,347 INFO  [org.jboss.as.logging] JBAS011502: Removing bootstrap log handlers
  15:18:53,352 INFO  [org.jboss.as.configadmin] (ServerService Thread Pool -- 26) JBAS016200: Activating ConfigAdmin Subsystem
  15:18:53,381 INFO  [org.jboss.as.naming] (ServerService Thread Pool -- 38) JBAS011800: Activating Naming Subsystem
  15:18:53,393 INFO  [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 31) JBAS010280: Activating Infinispan subsystem.
  15:18:53,406 INFO  [org.jboss.as.osgi] (ServerService Thread Pool -- 39) JBAS011940: Activating OSGi Subsystem
  15:18:53,407 INFO  [org.jboss.as.security] (ServerService Thread Pool -- 44) JBAS013101: Activating Security Subsystem
  15:18:53,415 INFO  [org.jboss.as.connector] (MSC service thread 1-5) JBAS010408: Starting JCA Subsystem (JBoss IronJacamar 1.0.9.Final)
  15:18:53,446 INFO  [org.jboss.as.naming] (MSC service thread 1-6) JBAS011802: Starting Naming Service
  15:18:53,448 INFO  [org.jboss.as.mail.extension] (MSC service thread 1-6) JBAS015400: Bound mail session [java:jboss/mail/Default]
  15:18:53,450 INFO  [org.jboss.as.webservices] (ServerService Thread Pool -- 48) JBAS015537: Activating WebServices Extension
  15:18:53,522 INFO  [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 27) JBAS010403: Deploying JDBC-compliant driver class org.h2.Driver (version 1.3)
  15:18:53,529 INFO  [org.jboss.as.security] (MSC service thread 1-6) JBAS013100: Current PicketBox version=4.0.7.Final
  15:18:53,801 INFO  [org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-3) Starting Coyote HTTP/1.1 on http-localhost-127.0.0.1-8080
  15:18:53,826 INFO  [org.jboss.ws.common.management.AbstractServerConfig] (MSC service thread 1-4) JBoss Web Services - Stack CXF Server 4.0.2.GA
  15:18:54,198 INFO  [org.jboss.as.server.deployment.scanner] (MSC service thread 1-7) JBAS015012: Started FileSystemDeploymentService for directory C:\Utils\jboss-as-7.1.1.Final\jboss-as-7.1.1.Final\standalone\deployments
  15:18:54,201 INFO  [org.jboss.as.remoting] (MSC service thread 1-6) JBAS017100: Listening on localhost/127.0.0.1:4447
  15:18:54,204 INFO  [org.jboss.as.remoting] (MSC service thread 1-2) JBAS017100: Listening on /127.0.0.1:9999
  15:18:54,214 INFO  [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) JBAS015003: Found HelloWorldSessionBean.jar in deployment directory. To trigger deployment create a file called HelloWorldSessionBean.jar.dodeploy
  15:18:54,355 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-3) JBAS010400: Bound data source [java:jboss/datasources/ExampleDS]
  15:18:54,394 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-6) JBAS015876: Starting deployment of "HelloWorldSessionBean.jar"
  15:18:54,584 INFO  [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-6) JNDI bindings for session bean named HelloWorldBean in deployment unit deployment "HelloWorldSessionBean.jar" are as follows:
  
      java:global/HelloWorldSessionBean/HelloWorldBean!com.ibytecode.business.HelloWorld
      java:app/HelloWorldSessionBean/HelloWorldBean!com.ibytecode.business.HelloWorld
      java:module/HelloWorldBean!com.ibytecode.business.HelloWorld
      java:jboss/exported/HelloWorldSessionBean/HelloWorldBean!com.ibytecode.business.HelloWorld
      java:global/HelloWorldSessionBean/HelloWorldBean
      java:app/HelloWorldSessionBean/HelloWorldBean
      java:module/HelloWorldBean
  
  15:18:54,763 INFO  [org.jboss.as] (MSC service thread 1-6) JBAS015951: Admin console listening on http://127.0.0.1:9990
  15:18:54,763 INFO  [org.jboss.as] (MSC service thread 1-6) JBAS015874: JBoss AS 7.1.1.Final "Brontes" started in 3757ms - Started 169 of 246 services (76 services are passive or on-demand)
  15:18:54,830 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS018559: Deployed "HelloWorldSessionBean.jar"
  </code></pre>