Eclipse Glassfish 3, ошибка клиента - PullRequest
4 голосов
/ 14 мая 2011

Я использую последнюю версию Eclipse для разработки EJB 3 под Glassfish 3. Я создаю новый экземпляр сервера Glassfish в Eclipse, пишу простой 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" не в пути к классам?

Исходный код здесь http://www.mediafire.com/file/278rc1tpip0rjku/EJBApp2.rar

Я ценю вашу помощь.

Ответы [ 4 ]

12 голосов
/ 05 декабря 2011

Чтобы решить эту проблему, вам просто нужно добавить внешний 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» в консоли.

4 голосов
/ 14 июня 2011

Судя по установленным вами свойствам, это должен быть автономный клиент.

Убедитесь, что вы включили gf-client.jar в ваш путь к классам, чтобы это работало.(glassfish \ lib \ gf-client.jar)

Вам также не нужно устанавливать заданные вами свойства.Чтобы указать не локальное расположение вашего сервера или альтернативного порта, вы можете установить:

prop.setProperty("org.omg.CORBA.ORBInitialHost", "localhost");
prop.setProperty("org.omg.CORBA.ORBInitialPort", "3700");

Возможно, вы также захотите перейти к разделу «Как получить доступ к удаленному компоненту EJB из автономного Java-клиента?»в: http://glassfish.java.net/javaee5/ejb/EJB_FAQ.html#StandaloneRemoteEJB

0 голосов
/ 06 марта 2015

У меня была похожая ошибка:

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, который реализует интерфейс GlassFishORBHelper.

0 голосов
/ 25 мая 2011

Мне кажется, что вы пытаетесь установить соединение с приложением, которое не развернуто на вашем сервере, который обрабатывает пул соединений

...