Удаленный доступ к EJB3 из Spring - PullRequest
0 голосов
/ 17 февраля 2012

У меня есть 2 приложения - одно EAR, содержащее EJB3.0, а другое - его Spring-клиент. Оба развернуты на одном экземпляре сервера приложений Websphere 7, то есть на одной и той же JVM.

Вот пара клиентских частей:

applicationContext.xml:

<bean id="ruleService" class="org.springframework.ejb.access.SimpleRemoteStatelessSessionProxyFactoryBean">
    <property name="jndiName" value="com.ecrd.ruleservice.Customer_Management_Service_JavaBusiness"/>
    <property name="businessInterface" value="com.ecrd.ruleservice.Customer_Management_Service_JavaBusiness"/>
    <property name="jndiEnvironment">  
          <props>  
             <prop key="java.naming.factory.initial">com.ibm.websphere.naming.WsnInitialContextFactory</prop>  
             <prop key="java.naming.provider.url">corbaloc:iiop:localhost:2809</prop>  
             </props>  
        </property>  
</bean>

Фрагмент кода клиента:

ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
Customer_Management_Service_JavaBusiness ruleService 
                    = (Customer_Management_Service_JavaBusiness)ctx.getBean("ruleService");

Это отлично работает. Доступ к EJB, развернутый в другом приложении в том же контейнере, работает.

Но это не сработает, если я перенесу этого клиента на другую машину в той же сети и просто поменяю URL провайдера и дам IP удаленного сервера вместо localhost. Возникает проблема с поиском JNDI

Точная ошибка: Ошибка 500: org.springframework.beans.factory.BeanCreationException: Ошибка создания компонента с именем 'ruleService', определенным в ресурсе пути к классу [applicationContext.xml]: сбой вызова метода init; вложенное исключение - javax.naming.NameNotFoundException: Контекст: CFSDDVM2399Node01Cell / node / CFSDDVM2399Node01 / servers / server1, имя: com.ecrd.ruleservice.Customer_Management_Service_JavaBusiness: первый компонент в имени com.ecava_service_Mervice_service_service_service_service_service_service_service_service_service_service_service_service_service_service_service_service_service [Исключением root является org.omg.CosNaming.NamingContextPackage.NotFound: IDL: omg.org/CosNaming/NamingContext/NotFound: 1.0]

Я не могу понять, какие изменения (и где) требуются для подключения к EJB, размещенному на другой серверной JVM. Любая помощь или предложение приветствуются.

1 Ответ

0 голосов
/ 21 февраля 2012

Отвечаю сам. Ошибка устранена. Я работаю на виртуальной машине. Все образы разработчика были скопированы с определенной виртуальной машины, и это принес с собой конфиги WAS (имя хоста, ячейка, узел и т. д.). Удаленный доступ работал после исправления всех вхождений имен хостов в serverindex.xml сервера хостинг EJB.

...