我怎么可以绑定查找一个字符串(How can I bind lookup with a String

2019-10-30 05:57发布

我的计划是包的客户端;

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不bound.I试图使用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://本地主机:1099 
我已指定ejb-jar.xml中查找名称myHelloWorld。 我应该要做的查找绑定

In jonas-ejb-jar.xml   
  ejb-name->HelloWorld 
  jndi-name->myHelloWorld

Answer 1:

这似乎是JNDI名称(“myHelloWorld”),您试图连接不正确。 您的JNDI名称应该要么在Java的范围或全球范围内绑定。 如果是在Java中的命名范围,那么你应该使用Java访问:myHelloWorld,否则直接。 您可以验证从JBoss管理控制台的命名范围。 Java的名字sapce手段,它只能从同一服务器访问。 全局命名空间的手段,这是任何其他服务器访问。 您可以使用ejb-jar.xml中配置进行控制。

另一种可能是你的bean没有得到正确部署。 它会显示在启动服务器日志的消息。 该消息还包含JNDI名称的bean的约束。 尝试重新启动服务器可以看到你可以得到这个细节



文章来源: How can I bind lookup with a String