Java eclipse glassfish 3,客户端错误

Java eclipse glassfish 3,客户端错误,java,glassfish-3,Java,Glassfish 3,我正在使用最新的Eclipse在GlassFish3下开发EJB3。我在Eclipse中创建了一个新的Glassfish服务器实例,编写了一个简单的EJB,部署成功 现在我写了一个客户端,但它总是给我这样的错误 java.lang.RuntimeException: Orb initialization erorr at org.glassfish.enterprise.iiop.api.GlassFishORBHelper.getORB(GlassFishORBHelper.java:

我正在使用最新的Eclipse在GlassFish3下开发EJB3。我在Eclipse中创建了一个新的Glassfish服务器实例,编写了一个简单的EJB,部署成功

现在我写了一个客户端,但它总是给我这样的错误

java.lang.RuntimeException: Orb initialization erorr
    at org.glassfish.enterprise.iiop.api.GlassFishORBHelper.getORB(GlassFishORBHelper.java:148)
    at com.sun.enterprise.naming.impl.SerialContext.getORB(SerialContext.java:365)
    at com.sun.enterprise.naming.impl.SerialContext.getProviderCacheKey(SerialContext.java:372)
    at com.sun.enterprise.naming.impl.SerialContext.getRemoteProvider(SerialContext.java:402)
    at com.sun.enterprise.naming.impl.SerialContext.getProvider(SerialContext.java:347)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:504)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at com.client.Test.main(Test.java:22)
Caused by: java.lang.NullPointerException
    at org.glassfish.enterprise.iiop.api.GlassFishORBHelper.getORB(GlassFishORBHelper.java:120)
    ... 8 more
Exception in thread "main" javax.naming.NamingException: Lookup failed for 'helloRemote' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NamingException: Unable to acquire SerialContextProvider for SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is java.lang.RuntimeException: Orb initialization erorr]]
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at com.client.Test.main(Test.java:22)
Caused by: javax.naming.NamingException: Unable to acquire SerialContextProvider for SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is java.lang.RuntimeException: Orb initialization erorr]
    at com.sun.enterprise.naming.impl.SerialContext.getProvider(SerialContext.java:352)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:504)
    ... 3 more
Caused by: java.lang.RuntimeException: Orb initialization erorr
    at org.glassfish.enterprise.iiop.api.GlassFishORBHelper.getORB(GlassFishORBHelper.java:148)
    at com.sun.enterprise.naming.impl.SerialContext.getORB(SerialContext.java:365)
    at com.sun.enterprise.naming.impl.SerialContext.getProviderCacheKey(SerialContext.java:372)
    at com.sun.enterprise.naming.impl.SerialContext.getRemoteProvider(SerialContext.java:402)
    at com.sun.enterprise.naming.impl.SerialContext.getProvider(SerialContext.java:347)
    ... 4 more
Caused by: java.lang.NullPointerException
    at org.glassfish.enterprise.iiop.api.GlassFishORBHelper.getORB(GlassFishORBHelper.java:120)
    ... 8 more
客户端代码如下所示

Properties props = new Properties();
        props.setProperty("java.naming.factory.initial",  "com.sun.enterprise.naming.SerialInitContextFactory");
        props.setProperty("java.naming.factory.url.pkgs",  "com.sun.enterprise.naming");
        props.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");


         InitialContext ic = new InitialContext(props);

         HelloRemote remote = (HelloRemote) ic.lookup("helloRemote");
         System.out.println(remote.echo("john"));
你知道为什么吗?类路径中是否没有“com.sun.enterprise.naming.SerialInitContextFactory”

源代码在这里


非常感谢您的帮助。

在我看来,您试图从一个未部署在您的服务器上的应用程序建立连接,该应用程序处理ConnectionPool

从您设置的属性判断,这必须是一个独立的客户端

确保将gf-client.jar包含到类路径中,以使其正常工作。(glassfish\lib\gf client.jar)

您也不需要设置设置的属性。要指定服务器或备用端口的非本地主机位置,请执行以下操作:

prop.setProperty("org.omg.CORBA.ORBInitialHost", "localhost");
prop.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
您可能还想在以下位置浏览“如何从独立java客户端访问远程EJB组件”:

要解决这个问题,只需在客户端的构建路径中添加外部jar“appserv-rt.jar”

您可以在文件夹…\glassfishv3\glassfish\lib中找到它

或者用这个jar及其所有依赖项创建一个包,将其添加到BP中

这是我的密码

InitialContext ctx = new InitialContext();
HelloWorld helloWorldRemote = (HelloWorld) ctx.lookup("ejb/helloWorldBeanJndiName");
System.out.println(helloWorldRemote.sayHello());
如果没有jar文件,我会出现相同的错误,并且在控制台中会出现“Hello”。

我也有类似的错误:

java.lang.RuntimeException: Orb initialization erorr at org.glassfish.enterprise.iiop.api.GlassFishORBHelper.getORB(GlassFishORBHelper.java:180)
这是由

java.lang.NullPointerException at org.glassfish.enterprise.iiop.api.GlassFishORBHelper.getORB(GlassFishORBHelper.java:152)

我的解决方案是添加包含GlassFishORBFactoryImpl.class的jar,该类实现了GlassFishORBHelper接口。

其他人也有同样的问题,他们发现它工作不适合我的情况。相同的错误请参见的步骤3:在
类路径中需要
gf client.jar
。库appserv-rt.jar解决了我的“由java.lang.RuntimeException:Orb初始化erorr引起的”问题。非常感谢。