JBoss AS7に@RemoteEJBがあり、名前で入手できますjava:global/RandomEjb/DefaultRemoteRandom!pl.lechglowiak.ejbTest.RemoteRandom
。
<jee:remote-slsb>
スタンドアロンクライアントは、 Beanを使用するSpringアプリケーションです。その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>
RemoteClient.javaパブリッククラスRemoteClient{
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.Final pom
pl.lechglowiak.ejbTest.RemoteRandomは、クライアントアプリケーションのクラスパスで使用できます。jndi.propertiesには、のとまったく同じプロパティが含まれてい<jee:environment>
ます<jee:remote-slsb>
。
このようなコードは例外なく実行されます。
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:呼び出しコンテキストorg.jboss.ejb.client.EJBClientInvocationContext@1a89031の[appName:、moduleName:RandomEjb、distinctName:]の組み合わせを処理するために使用できるEJBレシーバーがありません。
jboss.naming.client.ejb.context=true
が設定されます。私が何を間違って設定しているのか分かります<jee:remote-slsb>
か?