0
我遇到了ejb remote method invocation
问题。
为了测试,我创建了一个在远程接口中声明的带有静态bean和简单方法的ejb项目。我在JBoss 7.1中部署了这个项目。客户端使用EJB远程方法调用
现在我想从另一个类调用业务方法hello
,该类不属于该项目,也未在该jboss服务器中部署。所以如果我理解它是正确的,这是来自客户端的正常远程方法调用。
我写了我的HelloWorldClient,声明了InitialContext()的属性。但是当我运行这个客户端时,我得到了一个NameNotFoundException。对我来说,这个例外似乎是因为一个错误的jndi-name,但我试了很多才得到正确的。
在控制台上,我从我的服务器上为项目获取了jndi名称,但它不起作用。有人可以帮我解决这个问题吗?
客户端与背景:
Properties jndiProps = new Properties();
jndiProps.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
jndiProps.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
jndiProps.put(Context.PROVIDER_URL,"remote://localhost:4447");
jndiProps.put(Context.SECURITY_PRINCIPAL, "testuser");
jndiProps.put(Context.SECURITY_CREDENTIALS, "testpasswort");
Context ctx = new InitialContext(jndiProps);
HelloWorldRemote hello = (HelloWorldRemote) ctx.lookup("java:global[/ejbproject1]/ejbproject1/HelloWorldBean[/HelloWorldRemote]");
我的豆:
0:@Stateless(name="hello")
public class HelloWorldBean implements HelloWorldRemote{
@Override
public String hello(String value) {
System.out.println("Say hello to "+value);
return "Hello " + value;
}
从JBoss
18:19:07,464 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-6) JNDI bindings for session bean named hello in deployment unit deployment "ejbproject1.jar" are as follows:
java:global/ejbproject1/hello!interfaces.HelloWorldRemote
java:app/ejbproject1/hello!interfaces.HelloWorldRemote
java:module/hello!interfaces.HelloWorldRemote
java:jboss/exported/ejbproject1/hello!interfaces.HelloWorldRemote
java:global/ejbproject1/hello
java:app/ejbproject1/hello
java:module/hello
和异常的JNDI名称
非常感谢,同时我尝试了不同的方式,我使用Maven构建。我将项目添加为依赖项,并直接在EJB注入中进行查找 – Benjamin 2014-11-21 10:09:17