gpt4 book ai didi

Spring and JBoss AS7 - No EJB receiver available for handling

转载 作者:行者123 更新时间:2023-12-04 08:52:53 26 4
gpt4 key购买 nike

我在 JBoss AS 7 上有 @Remote EJB,可以通过名称获得 java:global/RandomEjb/DefaultRemoteRandom!pl.lechglowiak.ejbTest.RemoteRandom .

独立客户端是使用 <jee:remote-slsb> 的 Spring 应用程序。 bean 。
尝试使用该 bean 时,我得到 java.lang.IllegalStateException: EJBCLIENT000025: No EJB receiver available for handling [appName:, moduleName:RandomEjb, distinctName:] combination for invocation context org.jboss.ejb.client.EJBClientInvocationContext@1a89031 .

这是 applicationContext.xml 的相关部分:

<jee:remote-slsb id="remoteRandom"
jndi-name="RandomEjb/DefaultRemoteRandom!pl.lechglowiak.ejbTest.RemoteRandom"
business-interface="pl.lechglowiak.ejbTest.RemoteRandom"
<jee:environment>
java.naming.factory.initial=org.jboss.naming.remote.client.InitialContextFactory
java.naming.provider.url=remote://localhost:4447
jboss.naming.client.ejb.context=true
java.naming.security.principal=testuser
java.naming.security.credentials=testpassword
</jee:environment>
</jee:remote-slsb>

<bean id="remoteClient" class="pl.lechglowiak.RemoteClient">
<property name="remote" ref="remoteRandom" />
</bean>

远程客户端.java
公共(public)类远程客户端 {
private RemoteRandom random;

public void setRemote(RemoteRandom random){
this.random = random;
}

public Integer callRandom(){
try {
return random.getRandom(100);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

}

我的 jboss 客户端 jar:

org.jboss.as
jboss-as-ejb-client-bom
7.1.2.决赛
绒球


pl.lechglowiak.ejbTest.RemoteRandom 可用于客户端应用程序类路径。
jndi.properties 包含 <jee:environment> 中的确切属性的 <jee:remote-slsb> .

这样的代码无一异常(exception)地运行:
Context ctx2 = new InitialContext();
RemoteRandom rr = (RemoteRandom) ctx2.lookup("RandomEjb/DefaultRemoteRandom!pl.lechglowiak.ejbTest.RemoteRandom");
System.out.println(rr.getRandom(10000));

但是这个:
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
RemoteClient client = ctx.getBean("remoteClient", RemoteClient.class);
System.out.println(client.callRandom());

以异常结束:java.lang.IllegalStateException: EJBCLIENT000025: 没有 EJB 接收器可用于处理调用上下文 org.jboss.ejb.client.EJBClientInvocationContext@1a89031 的 [appName:, moduleName:RandomEjb, distinctName:] 组合。
jboss.naming.client.ejb.context=true已设置。
你知道我在 <jee:remote-slsb> 中设置错了什么吗? ?

最佳答案

我刚刚解决了一个非常相似的问题。您是否创建了“jboss-ejb-client.propeties”文件?

如果没有,请查看以下内容:
https://docs.jboss.org/author/display/AS71/EJB+invocations+from+a+remote+client+using+JNDI (特别是“设置 EJB 客户端上下文属性”子主题)

https://community.jboss.org/message/740827

https://community.jboss.org/thread/197989

您应该将文件放在客户端的类路径中。这是一个简单的示例,说明它的外观:

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=login
remote.connection.default.password=password

祝你好运!

PS:此配置中唯一特定于项目的值是“用户名”和“密码”。

PS2:如果你没有在你的 jboss 设置中添加用户,它是通过位于你的 jboss 文件夹中的“bin/add-user.[bat/sh]”脚本完成的。

关于 Spring <jee :remote-slsb> and JBoss AS7 - No EJB receiver available for handling,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12903624/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com