2012-02-17 61 views
0

我有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中。歡迎任何幫助或建議。

回答

0

回答我自己。錯誤已解決。 我在虛擬機上工作。所有開發人員的圖像都是從特定的虛擬機複製而來的,並且它帶來了WAS配置(主機名,單元,節點等)。遠程訪問 在修復承載EJB的服務器 的serverindex.xml中的所有主機名發生之後工作。