EJBCLIENT000025:没有EJB接收器可用于处理? [英] EJBCLIENT000025: No EJB receiver available for handling?

查看:196
本文介绍了EJBCLIENT000025:没有EJB接收器可用于处理?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



但是我收到以下错误消息/例外:

  java.lang.IllegalStateException:EJBCLIENT000025:没有EJB接收器可用于处理[appName:xx-xx,moduleName: xx-xx-business-impl,distinctName:]组合用于调用上下文org.jboss.ejb.client.EJBClientInvocationContext@14bc02d 
在org.jboss.ejb.client.EJBClientContext.requireEJBReceiver(EJBClientContext.java:693)
在org.jboss.ejb.client.ReceiverInterceptor.handleInvocation(ReceiverInterceptor.java:116)
在org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:183)
at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:177)
在org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:161)
在org.jboss。 ejb.client.EJBInvocationHandler.i nvoke(EJBInvocationHandler.java:124)
at com.sun.proxy $ Proxy0.getX(Unknown Source)
at com ... ris.client.PACSServiceTest.main(PACSServiceTest.java:71)

测试远程Bean TestService 及其实现是在一个EAR。



服务器类:

  @Remote 
public interface TestService {

public int getX();

}

@Stateless
@Remote(TestService.class)
public class TestServiceBean实现TestService {

@Override
public int getX(){
// TODO自动生成的方法stub
return 1111;
}
}

客户端代码:

  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

客户端依赖关系:

  +  -  org.jboss.spec.javax.transaction:jboss-transaction-api_1。 1_spec:罐: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
从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:提供
| + - org.jboss.msc:jboss-msc:jar:1.0.4.GA:提供
| + - 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:提供
| | + - 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:提供
| | | \- 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:提供
| | + - org.jboss:jboss-dmr:jar:1.1.6.Final:提供
| | + - org.jboss.invocation:jboss-invocation:jar:1.1.1.Final:提供
| | + - org.jboss.logmanager:jboss-logmanager:jar:1.4.0.Final:提供
| | + - org.jboss.logmanager:log4j-jboss-logmanager:jar:1.0.1.Final:prov

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

任何想法?感谢提前!

解决方案

只要你想要,你需要保留引用的InitialContext(不能被垃圾回收) 查找远程EJB上的访问方法。


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!

解决方案

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.

这篇关于EJBCLIENT000025:没有EJB接收器可用于处理?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆