10 Replies Latest reply on Nov 4, 2013 3:45 PM by Dibyendu Sarkar

    java.lang.IllegalStateException: No EJB receiver available for handling (...)

    Gabriel Francisco dos Santos Silva Newbie

      Hey! I'm new with JBoss and I'm having some issues with lookup others remote EJBs

       

      Well, I tried to lookup an EJB in a standalone and it worked, only put my jndi.properties in the src and do the lookup and it works.

       

      It seems that I can lookup an EJB, I have no error at the moment of the lookup, but, when I try to use some method of this same EJB, I'm getting this:

       

      java.lang.IllegalStateException: No EJB receiver available for handling [appName:,modulename:ExampleEJBProject,distinctname:] combination for invocation context org.jboss.ejb.client.EJBClientInvocationContext@57288854

       

      I think the JNDI is right, because, when I try to put anything, even the lookup doesn't work.

       

      Well, so...

       

      Here is my EJBLocator:

       

      package org.ejb;
      
      
      import java.util.Properties;
      
      
      import javax.naming.Context;
      import javax.naming.InitialContext;
      import javax.naming.NamingException;
      
      
      public class EJBLocator {
      
      
                @SuppressWarnings("unchecked")
                public static <T> T lookup(String jndi, Class<T> clazz)
                                    throws NamingException {
                          //Properties jndiProp = getProperties();
                          Properties jndiProp = getProperties2();
      
      
                          return (T) new InitialContext(jndiProp).lookup(jndi + "!"
                                              + clazz.getCanonicalName());
                }
      
      
                private static Properties getProperties() {
                          Properties jndiProp = new Properties();
                          jndiProp.put(Context.INITIAL_CONTEXT_FACTORY,
                                              org.jboss.naming.remote.client.InitialContextFactory.class
                                                                  .getName());
                          jndiProp.put(Context.PROVIDER_URL, "remote://192.168.1.101:4447");
                          jndiProp.put("jboss.naming.client.ejb.context", true);
                          jndiProp.put(
                                              "jboss.naming.client.connect.options.org.xnio.Options.SASL_POLICY_NOPLAINTEXT",
                                              "false");
                          jndiProp.put("java.naming.security.principal", "root");
                          jndiProp.put("java.naming.security.credentials", "admin");
                          return jndiProp;
                }
      
      
                private static Properties getProperties2() {
                          Properties jndiProp = new Properties();
      
      
                          jndiProp.put("endpoint.name", "client-endpoint");
                          jndiProp.put(
                                              "remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED",
                                              false);
                          jndiProp.put("remote.connections", "default");
                          jndiProp.put("remote.connection.default.host", "192.168.1.101");
                          jndiProp.put("remote.connection.default.port", "4447");
                          jndiProp.put(
                                              "remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS",
                                              false);
                          jndiProp.put("remote.connection.default.username", "root");
                          jndiProp.put("remote.connection.default.password", "admin");
      
                          return jndiProp;
                }
      }
      

       

      And, my ManagedBean, the one that calls the EJBLocator.lookup()

       

      package org.beans;
      
      
      import javax.faces.application.FacesMessage;
      import javax.faces.bean.ManagedBean;
      import javax.faces.context.FacesContext;
      
      
      import org.ejb.EJBLocator;
      
      
      import br.com.wehavescience.interfaces.CalculadoraRemote;
      
      
      @ManagedBean
      public class ClientBean {
                private CalculadoraRemote bean;
      
      
                public String calcular() {
                          try {
                                    bean = EJBLocator.lookup("ejb:/ExampleEJBProject/CalculadoraBean", CalculadoraRemote.class);
      
      
                                    double result = bean.somar(2, 2);
      
      
                                    FacesContext.getCurrentInstance().addMessage(null,
                                                        new FacesMessage(String.valueOf(result)));
                          } catch (Exception ex) {
                                    ex.printStackTrace();
                          }
      
      
                          return "";
                }
      }
      

       

       

      My jboss-ejb-client.properties:

       

      endpoint.name=client-endpoint
      remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
      remote.connections=default
      remote.connection.default.host=192.168.1.101
      remote.connection.default.port = 4447
      remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
      remote.connection.default.username=root
      remote.connection.default.password=admin
      

       

       

       

       

      And, my jboss-ejb-client.xml:

       

      <jboss-ejb-client xmlns="urn:jboss:ejb-client:1.0">
          <client-context>
              <ejb-receivers>
                  <remoting-ejb-receiver outbound-connection-ref="remote-ejb-connection"/>
              </ejb-receivers>
          </client-context>
      </jboss-ejb-client>
      

       

       

       

      And, what I have changed in the standalone.xml

       

      <?xml version='1.0' encoding='UTF-8'?>
      
      
      <server xmlns="urn:jboss:domain:1.2">
      
      
          (...)
          <management>
                (...)
                  <security-realm name="ejb-security-realm">
                      <server-identities>
                          <secret value="YWRtaW4="/>
                      </server-identities>
                  </security-realm>
              </security-realms>
             (...)
          </management>
      
      
          <profile>
                (...)
              <subsystem xmlns="urn:jboss:domain:pojo:1.0"/>
              <subsystem xmlns="urn:jboss:domain:remoting:1.1">
                  <connector name="remoting-connector" socket-binding="remoting" security-realm="ApplicationRealm"/>
                  <outbound-connections>
                      <remote-outbound-connection name="remote-ejb-connection" outbound-socket-binding-ref="remote-ejb" username="root" security-realm="ejb-security-realm">
                          <properties>
                              <property name="SASL_POLICY_NOANONYMOUS" value="false"/>
                              <property name="SSL_ENABLED" value="false"/>
                          </properties>
                      </remote-outbound-connection>
                  </outbound-connections>
              </subsystem>
             (...)
          </profile>
      
      
          (...)
      
      
          <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
              (...)
      
      
              <outbound-socket-binding name="remote-ejb">
                  <remote-destination host="192.168.1.101" port="4447"/>
              </outbound-socket-binding>
          </socket-binding-group>
      
      
      </server>
      

       

       

      Anyone knows what is happening?

       

       

      Thanks in advance!

        • 1. Re: java.lang.IllegalStateException: No EJB receiver available for handling (...)
          Gabriel Francisco dos Santos Silva Newbie

          I tried to search about this issue and people say that It is needed to put the jboss-ejb-client.properties in the classpath, but, I already did it, it seems that my jboss-ejb-client.properties has no use, because, if I remove or add it, nothing changes.

          When I coded the standalone and it worked, I just used the jndi.properties and new InitialContext().lookup("ejb:/...") and it worked, so, I tried it, but, I got this exception:

           

          12:49:46,608 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) Caused by: java.lang.SecurityException: EJB client context selector may not be changed

           

          Even if I put the properties into the constructor parameter, like new InitialContext(props), I'm still getting this.

           

          I read about this exception too, and I found it:

           

           

          EJBClientConfiguration ejbClientConfiguration = new PropertiesBasedEJBClientConfiguration(
                                                  ejbClientProperties);
                              final ContextSelector<EJBClientContext> ejbClientContextSelector = new ConfigBasedEJBClientContextSelector(
                                                  ejbClientConfiguration);
                              EJBClientContext.setSelector(ejbClientContextSelector);
          

           

          I added it before the lookup and still not working.

          • 2. Re: java.lang.IllegalStateException: No EJB receiver available for handling (...)
            jaikiran pai Master

            Are you trying to lookup a bean which is deployed on the same server as the client @ManagedBean? If yes, then you don't need any of this. Just use the java:global, java:app or java:module JNDI names of the bean depending on the client. The JNDI names are displayed on the console when deploying them.

            • 3. Re: java.lang.IllegalStateException: No EJB receiver available for handling (...)
              Gabriel Francisco dos Santos Silva Newbie

              The client isn't on the same server, actually I'm trying to lookup from another computer.

              • 5. Re: java.lang.IllegalStateException: No EJB receiver available for handling (...)
                Gabriel Francisco dos Santos Silva Newbie

                It was the first thing that I've read, like I said, I've changed my standalone.xml, I added a jboss-ejb-client.xml and a jboss-ejb-client.properties.

                • 6. Re: java.lang.IllegalStateException: No EJB receiver available for handling (...)
                  jaikiran pai Master

                  1) You don't need jboss-ejb-client.properties in this case.

                  2) You are using remote naming in your code (remote: protocol). See this for the difference https://docs.jboss.org/author/display/AS72/Remote+EJB+invocations+via+JNDI+-+EJB+client+API+or+remote-naming+project

                  3) Please enable TRACE level logs of org.jboss.ejb.client package on the server which is acting as the client and see if it provides some hint. You can attach those logs here if you need help with those.

                  • 7. Re: java.lang.IllegalStateException: No EJB receiver available for handling (...)
                    Gabriel Francisco dos Santos Silva Newbie

                    Well, I enabled the log of the org.jboss.ejb.client package, but, nothing changed on the log.

                     

                    The log is attached.

                    • 8. Re: java.lang.IllegalStateException: No EJB receiver available for handling (...)
                      Gabriel Francisco dos Santos Silva Newbie

                      Hey, here I am again!

                       

                      So, I was trying to do it with two computers, right? one was the server and one was the client, so, after that, I tried to do it on one computer, and it worked, well, I did it with 2 JBoss instances and blabla, okay, now I'm trying to understand why somehow my JBoss isn't allowing or I don't know, why my client isn't "seeing" the other JBoss from another computer.

                      Just remembering, my firewall is off and I could do it with a standalone from another PC, I mean, i have a jboss as 7.1 in a computer and looked up from another computer, only with the jndi.properties and it worked!

                       

                      Here is the server's standalone.xml

                       

                      <?xml version='1.0' encoding='UTF-8'?>
                      
                      
                      <server xmlns="urn:jboss:domain:1.2">
                      
                      
                          <extensions>
                              <extension module="org.jboss.as.clustering.infinispan"/>
                              <extension module="org.jboss.as.configadmin"/>
                              <extension module="org.jboss.as.connector"/>
                              <extension module="org.jboss.as.deployment-scanner"/>
                              <extension module="org.jboss.as.ee"/>
                              <extension module="org.jboss.as.ejb3"/>
                              <extension module="org.jboss.as.jaxrs"/>
                              <extension module="org.jboss.as.jdr"/>
                              <extension module="org.jboss.as.jmx"/>
                              <extension module="org.jboss.as.jpa"/>
                              <extension module="org.jboss.as.logging"/>
                              <extension module="org.jboss.as.mail"/>
                              <extension module="org.jboss.as.naming"/>
                              <extension module="org.jboss.as.osgi"/>
                              <extension module="org.jboss.as.pojo"/>
                              <extension module="org.jboss.as.remoting"/>
                              <extension module="org.jboss.as.sar"/>
                              <extension module="org.jboss.as.security"/>
                              <extension module="org.jboss.as.threads"/>
                              <extension module="org.jboss.as.transactions"/>
                              <extension module="org.jboss.as.web"/>
                              <extension module="org.jboss.as.webservices"/>
                              <extension module="org.jboss.as.weld"/>
                          </extensions>
                      
                      
                          <management>
                              <security-realms>
                                  <security-realm name="ManagementRealm">
                                      <authentication>
                                          <properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/>
                                      </authentication>
                                  </security-realm>
                                  <security-realm name="ApplicationRealm">
                                      <authentication>
                                          <properties path="application-users.properties" relative-to="jboss.server.config.dir"/>
                                      </authentication>
                                  </security-realm>
                              </security-realms>
                              <management-interfaces>
                                  <native-interface security-realm="ManagementRealm">
                                      <socket-binding native="management-native"/>
                                  </native-interface>
                                  <http-interface security-realm="ManagementRealm">
                                      <socket-binding http="management-http"/>
                                  </http-interface>
                              </management-interfaces>
                          </management>
                      
                      
                          <profile>
                              <subsystem xmlns="urn:jboss:domain:logging:1.1">
                                  <console-handler name="CONSOLE">
                                      <level name="INFO"/>
                                      <formatter>
                                          <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
                                      </formatter>
                                  </console-handler>
                                  <periodic-rotating-file-handler name="FILE">
                                      <formatter>
                                          <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
                                      </formatter>
                                      <file relative-to="jboss.server.log.dir" path="server.log"/>
                                      <suffix value=".yyyy-MM-dd"/>
                                      <append value="true"/>
                                  </periodic-rotating-file-handler>
                                  <logger category="com.arjuna">
                                      <level name="WARN"/>
                                  </logger>
                                  <logger category="org.apache.tomcat.util.modeler">
                                      <level name="WARN"/>
                                  </logger>
                                  <logger category="sun.rmi">
                                      <level name="WARN"/>
                                  </logger>
                                  <logger category="jacorb">
                                      <level name="WARN"/>
                                  </logger>
                                  <logger category="jacorb.config">
                                      <level name="ERROR"/>
                                  </logger>
                                  <root-logger>
                                      <level name="INFO"/>
                                      <handlers>
                                          <handler name="CONSOLE"/>
                                          <handler name="FILE"/>
                                      </handlers>
                                  </root-logger>
                              </subsystem>
                              <subsystem xmlns="urn:jboss:domain:configadmin:1.0"/>
                              <subsystem xmlns="urn:jboss:domain:datasources:1.0">
                                  <datasources>
                                      <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
                                          <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url>
                                          <driver>h2</driver>
                                          <security>
                                              <user-name>sa</user-name>
                                              <password>sa</password>
                                          </security>
                                      </datasource>
                                      <drivers>
                                          <driver name="h2" module="com.h2database.h2">
                                              <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                                          </driver>
                                      </drivers>
                                  </datasources>
                              </subsystem>
                              <subsystem xmlns="urn:jboss:domain:deployment-scanner:1.1">
                                  <deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000"/>
                              </subsystem>
                              <subsystem xmlns="urn:jboss:domain:ee:1.0"/>
                              <subsystem xmlns="urn:jboss:domain:ejb3:1.2">
                                  <session-bean>
                                      <stateless>
                                          <bean-instance-pool-ref pool-name="slsb-strict-max-pool"/>
                                      </stateless>
                                      <stateful default-access-timeout="5000" cache-ref="simple"/>
                                      <singleton default-access-timeout="5000"/>
                                  </session-bean>
                                  <pools>
                                      <bean-instance-pools>
                                          <strict-max-pool name="slsb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>
                                          <strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>
                                      </bean-instance-pools>
                                  </pools>
                                  <caches>
                                      <cache name="simple" aliases="NoPassivationCache"/>
                                      <cache name="passivating" passivation-store-ref="file" aliases="SimpleStatefulCache"/>
                                  </caches>
                                  <passivation-stores>
                                      <file-passivation-store name="file"/>
                                  </passivation-stores>
                                  <async thread-pool-name="default"/>
                                  <timer-service thread-pool-name="default">
                                      <data-store path="timer-service-data" relative-to="jboss.server.data.dir"/>
                                  </timer-service>
                                  <remote connector-ref="remoting-connector" thread-pool-name="default"/>
                                  <thread-pools>
                                      <thread-pool name="default">
                                          <max-threads count="10"/>
                                          <keepalive-time time="100" unit="milliseconds"/>
                                      </thread-pool>
                                  </thread-pools>
                              </subsystem>
                              <subsystem xmlns="urn:jboss:domain:infinispan:1.2" default-cache-container="hibernate">
                                  <cache-container name="hibernate" default-cache="local-query">
                                      <local-cache name="entity">
                                          <transaction mode="NON_XA"/>
                                          <eviction strategy="LRU" max-entries="10000"/>
                                          <expiration max-idle="100000"/>
                                      </local-cache>
                                      <local-cache name="local-query">
                                          <transaction mode="NONE"/>
                                          <eviction strategy="LRU" max-entries="10000"/>
                                          <expiration max-idle="100000"/>
                                      </local-cache>
                                      <local-cache name="timestamps">
                                          <transaction mode="NONE"/>
                                          <eviction strategy="NONE"/>
                                      </local-cache>
                                  </cache-container>
                              </subsystem>
                              <subsystem xmlns="urn:jboss:domain:jaxrs:1.0"/>
                              <subsystem xmlns="urn:jboss:domain:jca:1.1">
                                  <archive-validation enabled="true" fail-on-error="true" fail-on-warn="false"/>
                                  <bean-validation enabled="true"/>
                                  <default-workmanager>
                                      <short-running-threads>
                                          <core-threads count="50"/>
                                          <queue-length count="50"/>
                                          <max-threads count="50"/>
                                          <keepalive-time time="10" unit="seconds"/>
                                      </short-running-threads>
                                      <long-running-threads>
                                          <core-threads count="50"/>
                                          <queue-length count="50"/>
                                          <max-threads count="50"/>
                                          <keepalive-time time="10" unit="seconds"/>
                                      </long-running-threads>
                                  </default-workmanager>
                                  <cached-connection-manager/>
                              </subsystem>
                              <subsystem xmlns="urn:jboss:domain:jdr:1.0"/>
                              <subsystem xmlns="urn:jboss:domain:jmx:1.1">
                                  <show-model value="true"/>
                                  <remoting-connector/>
                              </subsystem>
                              <subsystem xmlns="urn:jboss:domain:jpa:1.0">
                                  <jpa default-datasource=""/>
                              </subsystem>
                              <subsystem xmlns="urn:jboss:domain:mail:1.0">
                                  <mail-session jndi-name="java:jboss/mail/Default">
                                      <smtp-server outbound-socket-binding-ref="mail-smtp"/>
                                  </mail-session>
                              </subsystem>
                              <subsystem xmlns="urn:jboss:domain:naming:1.1"/>
                              <subsystem xmlns="urn:jboss:domain:osgi:1.2" activation="lazy">
                                  <properties>
                                      <property name="org.osgi.framework.startlevel.beginning">
                                          1
                                      </property>
                                  </properties>
                                  <capabilities>
                                      <capability name="javax.servlet.api:v25"/>
                                      <capability name="javax.transaction.api"/>
                                      <capability name="org.apache.felix.log" startlevel="1"/>
                                      <capability name="org.jboss.osgi.logging" startlevel="1"/>
                                      <capability name="org.apache.felix.configadmin" startlevel="1"/>
                                      <capability name="org.jboss.as.osgi.configadmin" startlevel="1"/>
                                  </capabilities>
                              </subsystem>
                              <subsystem xmlns="urn:jboss:domain:pojo:1.0"/>
                              <subsystem xmlns="urn:jboss:domain:remoting:1.1">
                                  <connector name="remoting-connector" socket-binding="remoting" security-realm="ApplicationRealm"/>
                              </subsystem>
                              <subsystem xmlns="urn:jboss:domain:resource-adapters:1.0"/>
                              <subsystem xmlns="urn:jboss:domain:sar:1.0"/>
                              <subsystem xmlns="urn:jboss:domain:security:1.1">
                                  <security-domains>
                                      <security-domain name="other" cache-type="default">
                                          <authentication>
                                              <login-module code="Remoting" flag="optional">
                                                  <module-option name="password-stacking" value="useFirstPass"/>
                                              </login-module>
                                              <login-module code="RealmUsersRoles" flag="required">
                                                  <module-option name="usersProperties" value="${jboss.server.config.dir}/application-users.properties"/>
                                                  <module-option name="rolesProperties" value="${jboss.server.config.dir}/application-roles.properties"/>
                                                  <module-option name="realm" value="ApplicationRealm"/>
                                                  <module-option name="password-stacking" value="useFirstPass"/>
                                              </login-module>
                                          </authentication>
                                      </security-domain>
                                      <security-domain name="jboss-web-policy" cache-type="default">
                                          <authorization>
                                              <policy-module code="Delegating" flag="required"/>
                                          </authorization>
                                      </security-domain>
                                      <security-domain name="jboss-ejb-policy" cache-type="default">
                                          <authorization>
                                              <policy-module code="Delegating" flag="required"/>
                                          </authorization>
                                      </security-domain>
                                  </security-domains>
                              </subsystem>
                              <subsystem xmlns="urn:jboss:domain:threads:1.1"/>
                              <subsystem xmlns="urn:jboss:domain:transactions:1.1">
                                  <core-environment>
                                      <process-id>
                                          <uuid/>
                                      </process-id>
                                  </core-environment>
                                  <recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/>
                                  <coordinator-environment default-timeout="300"/>
                              </subsystem>
                              <subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false">
                                  <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
                                  <virtual-server name="default-host" enable-welcome-root="true">
                                      <alias name="localhost"/>
                                      <alias name="example.com"/>
                                  </virtual-server>
                              </subsystem>
                              <subsystem xmlns="urn:jboss:domain:webservices:1.1">
                                  <modify-wsdl-address>true</modify-wsdl-address>
                                  <wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host>
                                  <endpoint-config name="Standard-Endpoint-Config"/>
                                  <endpoint-config name="Recording-Endpoint-Config">
                                      <pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM">
                                          <handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/>
                                      </pre-handler-chain>
                                  </endpoint-config>
                              </subsystem>
                              <subsystem xmlns="urn:jboss:domain:weld:1.0"/>
                          </profile>
                      
                      
                          <interfaces>
                              <interface name="management">
                                  <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
                              </interface>
                              <interface name="public">
                                  <inet-address value="${jboss.bind.address:0.0.0.0}"/>
                              </interface>
                              <interface name="unsecure">
                                  <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/>
                              </interface>
                              <interface name="any">
                                  <any-ipv4-address/>
                              </interface>
                          </interfaces>
                      
                      
                          <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
                              <socket-binding name="management-native" interface="management" port="${jboss.management.native.port:9999}"/>
                              <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
                              <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9443}"/>
                              <socket-binding name="ajp" port="8009"/>
                              <socket-binding name="http" port="8080"/>
                              <socket-binding name="https" port="8443"/>
                              <socket-binding name="osgi-http" interface="management" port="8090"/>
                              <socket-binding name="remoting" interface="any" port="4447"/>
                              <socket-binding name="txn-recovery-environment" port="4712"/>
                              <socket-binding name="txn-status-manager" port="4713"/>
                              <outbound-socket-binding name="mail-smtp">
                                  <remote-destination host="localhost" port="25"/>
                              </outbound-socket-binding>
                          </socket-binding-group>
                      
                      
                      </server>
                      

                       

                       

                      Did I forget something?

                       

                      Thanks!

                      • 9. Re: java.lang.IllegalStateException: No EJB receiver available for handling (...)
                        Gabriel Francisco dos Santos Silva Newbie

                        I was trying with a Windows computer (server) and a Ubuntu computer (client), and I was getting that exception.

                        I just tried with a Windows computer (server) and another Windows computer (client) and IT WORKEEED!

                        Is that possible that my Ubuntu doesn't allow the remote connection from JBoss  to another JBoss? That doesn't make sense, since Ubuntu is a client, not the server.

                        Now I don't know if it is a JBoss/EJB question or a Ubuntu question, but, does anyone know about this?

                         

                        Thanks again and I'm waiting for answers!

                         

                        []'s

                        • 10. Re: java.lang.IllegalStateException: No EJB receiver available for handling (...)
                          Dibyendu Sarkar Newbie

                          Hi all,

                          I am also facing the same issue, but in a different way. I have the EJB jar and the java application in the same computer and even in the same jboss 7.1 server. My client is a simple java class with a main function, still I am facing the Error. Can any one please tell me what might be the reason.

                          I have added the below file in the classpath.

                          jboss-ejb-client.properties:

                           

                          endpoint.name=client-endpoint

                          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

                           

                           

                          My standalone.xml

                           

                           

                          <?xml version='1.0' encoding='UTF-8'?>

                           

                           

                          <server xmlns="urn:jboss:domain:1.2">

                           

                           

                              <extensions>

                                  <extension module="org.jboss.as.clustering.infinispan"/>

                                  <extension module="org.jboss.as.configadmin"/>

                                  <extension module="org.jboss.as.connector"/>

                                  <extension module="org.jboss.as.deployment-scanner"/>

                                  <extension module="org.jboss.as.ee"/>

                                  <extension module="org.jboss.as.ejb3"/>

                                  <extension module="org.jboss.as.jaxrs"/>

                                  <extension module="org.jboss.as.jdr"/>

                                  <extension module="org.jboss.as.jmx"/>

                                  <extension module="org.jboss.as.jpa"/>

                                  <extension module="org.jboss.as.logging"/>

                                  <extension module="org.jboss.as.mail"/>

                                  <extension module="org.jboss.as.naming"/>

                                  <extension module="org.jboss.as.osgi"/>

                                  <extension module="org.jboss.as.pojo"/>

                                  <extension module="org.jboss.as.remoting"/>

                                  <extension module="org.jboss.as.sar"/>

                                  <extension module="org.jboss.as.security"/>

                                  <extension module="org.jboss.as.threads"/>

                                  <extension module="org.jboss.as.transactions"/>

                                  <extension module="org.jboss.as.web"/>

                                  <extension module="org.jboss.as.webservices"/>

                                  <extension module="org.jboss.as.weld"/>

                              </extensions>

                           

                           

                              <management>

                                  <security-realms>

                                      <security-realm name="ManagementRealm">

                                          <authentication>

                                              <properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/>

                                          </authentication>

                                      </security-realm>

                                      <security-realm name="ApplicationRealm">

                                          <authentication>

                                              <properties path="application-users.properties" relative-to="jboss.server.config.dir"/>

                                          </authentication>

                                      </security-realm>

                                  </security-realms>

                                  <management-interfaces>

                                      <native-interface security-realm="ManagementRealm">

                                          <socket-binding native="management-native"/>

                                      </native-interface>

                                      <http-interface security-realm="ManagementRealm">

                                          <socket-binding http="management-http"/>

                                      </http-interface>

                                  </management-interfaces>

                              </management>

                           

                           

                              <profile>

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

                                      <console-handler name="CONSOLE">

                                          <level name="INFO"/>

                                          <formatter>

                                              <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>

                                          </formatter>

                                      </console-handler>

                                      <periodic-rotating-file-handler name="FILE">

                                          <formatter>

                                              <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>

                                          </formatter>

                                          <file relative-to="jboss.server.log.dir" path="server.log"/>

                                          <suffix value=".yyyy-MM-dd"/>

                                          <append value="true"/>

                                      </periodic-rotating-file-handler>

                                      <logger category="com.arjuna">

                                          <level name="WARN"/>

                                      </logger>

                                      <logger category="org.apache.tomcat.util.modeler">

                                          <level name="WARN"/>

                                      </logger>

                                      <logger category="sun.rmi">

                                          <level name="WARN"/>

                                      </logger>

                                      <logger category="jacorb">

                                          <level name="WARN"/>

                                      </logger>

                                      <logger category="jacorb.config">

                                          <level name="ERROR"/>

                                      </logger>

                                      <root-logger>

                                          <level name="INFO"/>

                                          <handlers>

                                              <handler name="CONSOLE"/>

                                              <handler name="FILE"/>

                                          </handlers>

                                      </root-logger>

                                  </subsystem>

                                  <subsystem xmlns="urn:jboss:domain:configadmin:1.0"/>

                                  <subsystem xmlns="urn:jboss:domain:datasources:1.0">

                                      <datasources>

                                          <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">

                                              <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url>

                                              <driver>h2</driver>

                                              <security>

                                                  <user-name>sa</user-name>

                                                  <password>sa</password>

                                              </security>

                                          </datasource>

                                          <drivers>

                                              <driver name="h2" module="com.h2database.h2">

                                                  <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>

                                              </driver>

                                          </drivers>

                                      </datasources>

                                  </subsystem>

                                  <subsystem xmlns="urn:jboss:domain:deployment-scanner:1.1">

                                      <deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000"/>

                                  </subsystem>

                                  <subsystem xmlns="urn:jboss:domain:ee:1.0"/>

                                  <subsystem xmlns="urn:jboss:domain:ejb3:1.2">

                                      <session-bean>

                                          <stateless>

                                              <bean-instance-pool-ref pool-name="slsb-strict-max-pool"/>

                                          </stateless>

                                          <stateful default-access-timeout="5000" cache-ref="simple"/>

                                          <singleton default-access-timeout="5000"/>

                                      </session-bean>

                                      <pools>

                                          <bean-instance-pools>

                                              <strict-max-pool name="slsb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>

                                              <strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>

                                          </bean-instance-pools>

                                      </pools>

                                      <caches>

                                          <cache name="simple" aliases="NoPassivationCache"/>

                                          <cache name="passivating" passivation-store-ref="file" aliases="SimpleStatefulCache"/>

                                      </caches>

                                      <passivation-stores>

                                          <file-passivation-store name="file"/>

                                      </passivation-stores>

                                      <async thread-pool-name="default"/>

                                      <timer-service thread-pool-name="default">

                                          <data-store path="timer-service-data" relative-to="jboss.server.data.dir"/>

                                      </timer-service>

                                      <remote connector-ref="remoting-connector" thread-pool-name="default"/>

                                      <thread-pools>

                                          <thread-pool name="default">

                                              <max-threads count="10"/>

                                              <keepalive-time time="100" unit="milliseconds"/>

                                          </thread-pool>

                                      </thread-pools>

                                  </subsystem>

                                  <subsystem xmlns="urn:jboss:domain:infinispan:1.2" default-cache-container="hibernate">

                                      <cache-container name="hibernate" default-cache="local-query">

                                          <local-cache name="entity">

                                              <transaction mode="NON_XA"/>

                                              <eviction strategy="LRU" max-entries="10000"/>

                                              <expiration max-idle="100000"/>

                                          </local-cache>

                                          <local-cache name="local-query">

                                              <transaction mode="NONE"/>

                                              <eviction strategy="LRU" max-entries="10000"/>

                                              <expiration max-idle="100000"/>

                                          </local-cache>

                                          <local-cache name="timestamps">

                                              <transaction mode="NONE"/>

                                              <eviction strategy="NONE"/>

                                          </local-cache>

                                      </cache-container>

                                  </subsystem>

                                  <subsystem xmlns="urn:jboss:domain:jaxrs:1.0"/>

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

                                      <archive-validation enabled="true" fail-on-error="true" fail-on-warn="false"/>

                                      <bean-validation enabled="true"/>

                                      <default-workmanager>

                                          <short-running-threads>

                                              <core-threads count="50"/>

                                              <queue-length count="50"/>

                                              <max-threads count="50"/>

                                              <keepalive-time time="10" unit="seconds"/>

                                          </short-running-threads>

                                          <long-running-threads>

                                              <core-threads count="50"/>

                                              <queue-length count="50"/>

                                              <max-threads count="50"/>

                                              <keepalive-time time="10" unit="seconds"/>

                                          </long-running-threads>

                                      </default-workmanager>

                                      <cached-connection-manager/>

                                  </subsystem>

                                  <subsystem xmlns="urn:jboss:domain:jdr:1.0"/>

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

                                      <show-model value="true"/>

                                      <remoting-connector/>

                                  </subsystem>

                                  <subsystem xmlns="urn:jboss:domain:jpa:1.0">

                                      <jpa default-datasource=""/>

                                  </subsystem>

                                  <subsystem xmlns="urn:jboss:domain:mail:1.0">

                                      <mail-session jndi-name="java:jboss/mail/Default">

                                          <smtp-server outbound-socket-binding-ref="mail-smtp"/>

                                      </mail-session>

                                  </subsystem>

                                  <subsystem xmlns="urn:jboss:domain:naming:1.1"/>

                                  <subsystem xmlns="urn:jboss:domain:osgi:1.2" activation="lazy">

                                      <properties>

                                          <property name="org.osgi.framework.startlevel.beginning">

                                              1

                                          </property>

                                      </properties>

                                      <capabilities>

                                          <capability name="javax.servlet.api:v25"/>

                                          <capability name="javax.transaction.api"/>

                                          <capability name="org.apache.felix.log" startlevel="1"/>

                                          <capability name="org.jboss.osgi.logging" startlevel="1"/>

                                          <capability name="org.apache.felix.configadmin" startlevel="1"/>

                                          <capability name="org.jboss.as.osgi.configadmin" startlevel="1"/>

                                      </capabilities>

                                  </subsystem>

                                  <subsystem xmlns="urn:jboss:domain:pojo:1.0"/>

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

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

                                  </subsystem>

                                  <subsystem xmlns="urn:jboss:domain:resource-adapters:1.0"/>

                                  <subsystem xmlns="urn:jboss:domain:sar:1.0"/>

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

                                      <security-domains>

                                          <security-domain name="other" cache-type="default">

                                              <authentication>

                                                  <login-module code="Remoting" flag="optional">

                                                      <module-option name="password-stacking" value="useFirstPass"/>

                                                  </login-module>

                                                  <login-module code="RealmUsersRoles" flag="required">

                                                      <module-option name="usersProperties" value="${jboss.server.config.dir}/application-users.properties"/>

                                                      <module-option name="rolesProperties" value="${jboss.server.config.dir}/application-roles.properties"/>

                                                      <module-option name="realm" value="ApplicationRealm"/>

                                                      <module-option name="password-stacking" value="useFirstPass"/>

                                                  </login-module>

                                              </authentication>

                                          </security-domain>

                                          <security-domain name="jboss-web-policy" cache-type="default">

                                              <authorization>

                                                  <policy-module code="Delegating" flag="required"/>

                                              </authorization>

                                          </security-domain>

                                          <security-domain name="jboss-ejb-policy" cache-type="default">

                                              <authorization>

                                                  <policy-module code="Delegating" flag="required"/>

                                              </authorization>

                                          </security-domain>

                                      </security-domains>

                                  </subsystem>

                                  <subsystem xmlns="urn:jboss:domain:threads:1.1"/>

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

                                      <core-environment>

                                          <process-id>

                                              <uuid/>

                                          </process-id>

                                      </core-environment>

                                      <recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/>

                                      <coordinator-environment default-timeout="300"/>

                                  </subsystem>

                                  <subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false">

                                      <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>

                                      <virtual-server name="default-host" enable-welcome-root="true">

                                          <alias name="localhost"/>

                                          <alias name="example.com"/>

                                      </virtual-server>

                                  </subsystem>

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

                                      <modify-wsdl-address>true</modify-wsdl-address>

                                      <wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host>

                                      <endpoint-config name="Standard-Endpoint-Config"/>

                                      <endpoint-config name="Recording-Endpoint-Config">

                                          <pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM">

                                              <handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/>

                                          </pre-handler-chain>

                                      </endpoint-config>

                                  </subsystem>

                                  <subsystem xmlns="urn:jboss:domain:weld:1.0"/>

                              </profile>

                           

                           

                              <interfaces>

                                  <interface name="management">

                                      <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>

                                  </interface>

                                  <interface name="public">

                                      <inet-address value="${jboss.bind.address:127.0.0.1}"/>

                                  </interface>

                                  <interface name="unsecure">

                                      <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/>

                                  </interface>

                              </interfaces>

                           

                           

                              <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">

                                  <socket-binding name="management-native" interface="management" port="${jboss.management.native.port:9999}"/>

                                  <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>

                                  <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9443}"/>

                                  <socket-binding name="ajp" port="8009"/>

                                  <socket-binding name="http" port="8080"/>

                                  <socket-binding name="https" port="8443"/>

                                  <socket-binding name="osgi-http" interface="management" port="8090"/>

                                  <socket-binding name="remoting" port="4447"/>

                                  <socket-binding name="txn-recovery-environment" port="4712"/>

                                  <socket-binding name="txn-status-manager" port="4713"/>

                                  <outbound-socket-binding name="mail-smtp">

                                      <remote-destination host="localhost" port="25"/>

                                  </outbound-socket-binding>

                              </socket-binding-group>

                           

                           

                          </server>

                           

                           

                          My codes

                           

                           

                          Bean class:

                           

                           

                          import com.ibytecode.business.HelloWorld;

                          import javax.ejb.Stateless;

                           

                          @Stateless

                          public class HelloWorldBean implements HelloWorld {

                              public HelloWorldBean() {

                              }

                           

                              public String sayHello() {

                                  return "Hello World !!!";

                              }

                          }

                           

                           

                          Business Interface :

                           

                           

                          package com.ibytecode.business;

                          import javax.ejb.Remote;

                           

                          @Remote

                          public interface HelloWorld {

                              public String sayHello();

                          }

                           

                           

                          EJB client 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;

                           

                                  return name;

                              }

                          }

                           

                           

                          EJB client utility(I have created for convenience) :

                           

                           

                          package com.ibytecode.clientutility;

                           

                          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);

                                      properties.put("jboss.naming.client.ejb.context", true);

                                      initialContext = new InitialContext(properties);

                                  }

                                  return initialContext;

                              }

                          }

                           

                          Can any one please help me know.