Запуск клиента Java CORBA в Unix

Я пытаюсь запустить написанное мной Java-приложение для подписки на службу событий CORBA. Он нормально работает на моем компьютере с Windows, но как только я развертываю его на сервере UNIX, он выдает исключение org.omg.CORBA.NO_IMPLEMENT. Любые идеи относительно того, почему это может происходить? Я использую JacORB на своем компьютере с Windows и передаю аргументы VM для инициализации клиентского ORB, но я не уверен, как это сделать в UNIX и нужно ли это вообще.

Заранее спасибо!


person Benny    schedule 17.04.2010    source источник
comment
Как вы запускаете клиент Corba в Unix? Вы запускаете его из командной строки или в контейнере Java EE?   -  person Kdeveloper    schedule 17.04.2010


Ответы (3)


JRE поставляется с полной реализацией Corba, и вам нужно сказать ему игнорировать их и вместо этого использовать JacOrb.

В Юниксе:

-Xbootclasspath:${JACORB_HOME}/lib/jacorb.jar:${JAVA_HOME}/jre/lib/rt.jar:${CLASSPATH} 
-Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB
-Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton

Посмотрите документы для JacORB. Там очень хорошо объяснено. Вам нужно установить файлы jar, и вам нужно указать либо ior, либо службу имен, переданную в вашу JVM.

Если ваш вопрос заключается в том, как это сделать в оболочке, пожалуйста, прокомментируйте или перефразируйте вопрос.

person Romain Hippeau    schedule 17.04.2010
comment
В итоге я перешел на касательную машину с Linux и установил более новую версию JDK и JacORB, которые исправили проблемы, с которыми я столкнулся. Спасибо всем за вклад. - person Benny; 20.04.2010

Если версии различаются, возможно, вы не заметили изменения имен пакетов в JacORB 1.3.21, т. к. имена изменились с jacorb на org.jacorb.

org.omg.CORBA.ORBClass=jacorb.orb.ORB
org.omg.CORBA.ORBSingletonClass=jacorb.orb.ORBSingleton

к этому:

org.omg.CORBA.ORBClass=org.jacorb.orb.ORB
org.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton

Если это не причина, пожалуйста, опубликуйте точные версии

person stacker    schedule 17.04.2010

Javadoc для org.omg.CORBA.NO_IMPLEMENTIMPLEMENT:

Это исключение указывает на то, что несмотря на то, что вызванная операция существует (у нее есть определение IDL), для этой операции не существует реализации. Например, NO_IMPLEMENT может быть вызван ORB, если клиент запрашивает определение типа объекта из репозитория интерфейса, но ORB не предоставляет репозиторий интерфейса.

Он содержит вспомогательный код, предоставляющий более подробную информацию о том, что вызвало исключение, и о статусе выполнения. Он также может содержать строку, описывающую исключение.

Поэтому я думаю, вам нужно посмотреть, что именно говорит Исключение. Могу поспорить, что вам нужно добавить эти java-аргументы для инициализации клиента ORB.

person Kdeveloper    schedule 17.04.2010