У меня есть 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. Любая помощь или предложение приветствуются.