我的计划是 包客户端;
import homeif.HelloWorldHome;
import remoteif.HelloWorld;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;
import java.awt.image.LookupOp;
import java.util.Properties;
public class HelloClient {
public static void main(String args[]) {
try {
Context initialContext = new InitialContext();
Object object = initialContext.lookup("myHelloWorld");
HelloWorldHome home =
(HelloWorldHome) PortableRemoteObject.narrow(object,
HelloWorldHome.class);
HelloWorld myHelloWorld = home.create();
String message = myHelloWorld.sayHello();
System.out.println(message);
} catch (Exception e) {
System.err.println(" Error : " + e);
System.exit(2);
}
}
}
我收到一个javax.naming.NameNotFoundException:myHelloWorld没绑定。我试图使用initialContext.bind绑定它(“myHelloWorld”,null);但是获得NullPointerException。我的jndi.properties包括
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces java.naming.provider.url=jnp://localhost:1099我在ejb-jar.xml中指定了查找名称myHelloWorld。我应该怎么做才能绑定查找
In jonas-ejb-jar.xml
ejb-name->HelloWorld
jndi-name->myHelloWorld
答案 0 :(得分:1)
您尝试连接的JNDI名称(' myHelloWorld')似乎不正确。您的JNDI名称应绑定在Java范围或全局范围内。如果它在Java命名范围内,那么您应该使用java:myHelloWorld访问它,否则直接访问它。您可以从Jboss管理控制台验证命名范围。 Java名称sapce意味着,只能从同一服务器访问它。全局名称空间表示可以从任何其他服务器访问。您可以使用ejb-jar.xml中的配置来控制它。
其他可能性是您的bean未正确部署。它将在启动时在服务器日志中显示一条消息。此消息还包含bean绑定的JNDI名称。尝试重启服务器可以看到你可以获得这个细节