Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

EJBCLIENT000025: No EJB receiver available for handling?

I am trying to connect to a remote EJB on my local JBoss 7.2 from an executable Java application (local not on JBoss).

But I get the following error/Exception :

java.lang.IllegalStateException: EJBCLIENT000025: No EJB receiver available for handling [appName:xx-xx, moduleName:xx-xx-business-impl, distinctName:] combination for invocation context org.jboss.ejb.client.EJBClientInvocationContext@14bc02d
    at org.jboss.ejb.client.EJBClientContext.requireEJBReceiver(EJBClientContext.java:693)
    at org.jboss.ejb.client.ReceiverInterceptor.handleInvocation(ReceiverInterceptor.java:116)
    at org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:183)
    at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:177)
    at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:161)
    at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:124)
    at com.sun.proxy.$Proxy0.getX(Unknown Source)
    at com...ris.client.PACSServiceTest.main(PACSServiceTest.java:71)

The test remote bean TestService and its implementation is in an EAR.

Server Classes:

@Remote
public interface TestService {

    public int getX();

}

@Stateless
@Remote(TestService.class)
public class TestServiceBean implements TestService{

    @Override
    public int getX() {
        // TODO Auto-generated method stub
        return 1111;
    }
}

Client code:

final Hashtable jndiProperties = new Hashtable();
jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
jndiProperties.put(Context.PROVIDER_URL,"remote://localhost:4447");

String jndiName = "ejb:orbis-dicom/orbis-dicom-business-impl//TestServiceBean!"
                  + TestService.class.getName();
logger.info(jndiName);

final Context context = new InitialContext(jndiProperties);
TestService service = (TestService) context.lookup(jndiName);

logger.info(service.getX());

jboss-ejb-client.properties:

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
remote.connection.default.username=xx
remote.connection.default.password=x

client dependencies:

+- org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:jar:1.
nal:runtime
 +- org.jboss.spec.javax.ejb:jboss-ejb-api_3.1_spec:jar:1.0.2.Final:runtim

 +- org.jboss:jboss-ejb-client:jar:1.0.16.Final:runtime
 |  +- org.jboss.marshalling:jboss-marshalling:jar:1.3.16.GA:runtime (vers
naged from 1.3.15.GA)
 |  \- org.jboss.logging:jboss-logging:jar:3.1.2.GA:runtime
 +- org.jboss.xnio:xnio-api:jar:3.0.7.GA:runtime
 +- org.jboss.xnio:xnio-nio:jar:3.0.7.GA:runtime
 +- org.jboss.remoting3:jboss-remoting:jar:3.2.14.GA:runtime
 +- org.jboss.sasl:jboss-sasl:jar:1.0.3.Final:runtime
 +- org.jboss.marshalling:jboss-marshalling-river:jar:1.3.16.GA:runtime
 +- org.jboss.as:jboss-as-naming:jar:7.2.0.Final:provided
 |  +- org.jboss:jboss-remote-naming:jar:1.0.5.Final:provided
 |  +- org.jboss.msc:jboss-msc:jar:1.0.4.GA:provided
 |  +- org.jboss.as:jboss-as-server:jar:7.2.0.Final:provided
 |  |  +- org.jboss.as:jboss-as-controller:jar:7.2.0.Final:provided
 |  |  |  +- org.jboss.as:jboss-as-controller-client:jar:7.2.0.Final:provi

 |  |  |  \- org.jboss:staxmapper:jar:1.1.0.Final:provided
 |  |  +- org.jboss.as:jboss-as-domain-http-interface:jar:7.2.0.Final:prov

 |  |  |  +- org.jboss.as:jboss-as-domain-management:jar:7.2.0.Final:provi

 |  |  |  |  \- org.jboss:jboss-common-core:jar:2.2.17.GA:provided
 |  |  |  \- org.jboss.com.sun.httpserver:httpserver:jar:1.0.1.Final:provi

 |  |  +- org.jboss.as:jboss-as-deployment-repository:jar:7.2.0.Final:prov

 |  |  |  \- org.jboss.as:jboss-as-protocol:jar:7.2.0.Final:provided
 |  |  +- org.jboss.as:jboss-as-platform-mbean:jar:7.2.0.Final:provided
 |  |  +- org.jboss.as:jboss-as-process-controller:jar:7.2.0.Final:provide

 |  |  |  \- system:jdk-tools:jar:jdk:system
 |  |  +- org.jboss.as:jboss-as-remoting:jar:7.2.0.Final:provided
 |  |  |  \- org.jboss.as:jboss-as-network:jar:7.2.0.Final:provided
 |  |  +- org.jboss.as:jboss-as-version:jar:7.2.0.Final:provided
 |  |  +- org.jboss:jandex:jar:1.0.3.Final:provided
 |  |  +- org.jboss:jboss-dmr:jar:1.1.6.Final:provided
 |  |  +- org.jboss.invocation:jboss-invocation:jar:1.1.1.Final:provided
 |  |  +- org.jboss.logmanager:jboss-logmanager:jar:1.4.0.Final:provided
 |  |  +- org.jboss.logmanager:log4j-jboss-logmanager:jar:1.0.1.Final:prov

 |  |  +- org.jboss.modules:jboss-modules:jar:1.2.0.CR1:provided
 |  |  +- org.jboss.stdio:jboss-stdio:jar:1.0.1.GA:provided
 |  |  +- org.jboss.threads:jboss-threads:jar:2.1.0.Final:provided
 |  |  \- org.jboss:jboss-vfs:jar:3.1.0.Final:provided
 |  \- org.jboss.as:jboss-as-build-config:jar:7.2.0.Final:provided
 \- log4j:log4j:jar:1.2.16:compile

Any ideas? Thanks in advance!

like image 292
yck Avatar asked Feb 13 '14 07:02

yck


1 Answers

You need to keep the InitialContext referenced (it must not be garbage collected) as long as you want to access methods on the "lookup'ed" Remote EJB.

like image 92
Stefan Cordes Avatar answered Oct 09 '22 14:10

Stefan Cordes