我有2個應用程序 - 一個包含EJB3.0及其Spring客戶端的EAR。兩者都部署在同一個Websphere應用服務器7實例上,即相同的JVM。來自Spring的遠程EJB3訪問
這裏有幾個客戶端部分:
的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訪問工作。
但是,如果我移動客戶端的其他機器在同一網絡它不工作,只是改變供應商的網址,並給遠程服務器的IP,而不是本地主機。發生JNDI查找問題
確切的錯誤: 錯誤500:org.springframework.beans.factory.BeanCreationException:錯誤創建具有名稱豆「ruleService」類路徑資源定義[applicationContext.xml中]:init方法的調用失敗;嵌套異常爲javax.naming.NameNotFoundException:上下文:CFSDDVM2399Node01Cell/nodes/CFSDDVM2399Node01/servers/server1,名稱:com.ecrd.ruleservice.Customer_Management_Service_JavaBusiness:名稱爲com.ecrd.ruleservice.Customer_Management_Service_JavaBusiness的第一個組件名稱未找到。 [根異常是org.omg.CosNaming.NamingContextPackage.NotFound:IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]
我想不出有什麼變化(在哪裏)都需要連接到EJB託管在不同的服務器JVM中。歡迎任何幫助或建議。