Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用字符串绑定查找_Java_Ejb_Jndi_Initial Context - Fatal编程技术网

Java 如何使用字符串绑定查找

Java 如何使用字符串绑定查找,java,ejb,jndi,initial-context,Java,Ejb,Jndi,Initial Context,我的节目是 包客户端 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 H

我的节目是 包客户端

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。My jndi.properties includes您试图连接的jndi名称('myHelloWorld')似乎不正确。您的JNDI名称应该绑定在Java范围或全局范围内。如果它在Java命名范围内,那么应该使用Java:myHelloWorld访问它,否则直接访问。您可以从Jboss管理控制台验证命名范围。Java名称sapce意味着,它只能从同一台服务器访问。全局名称空间意味着可以从任何其他服务器访问它。您可以使用ejb-jar.xml中的配置来控制这一点

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
另一种可能是您的bean没有正确部署。它将在启动时在服务器日志中显示一条消息。此消息还包含bean绑定的JNDI名称。尝试重新启动服务器可以看到您可以获得此详细信息

是否尝试使用
initialContext.lookup(“java:comp/env/myHelloWorld”)
initialContext.lookup(“java:comp/env/bean/myHelloWorld”)
?你可以阅读更多信息。是的。但是我得到了异常javax.naming.NameNotFoundException:comp not bound感谢您通过
ejb jar.xml
文件解释了“全局名称空间”的含义以及如何配置它。
In jonas-ejb-jar.xml   
  ejb-name->HelloWorld 
  jndi-name->myHelloWorld