2012-02-17 21 views
0

私は2つのアプリケーションを持っています - 1つのEARにEJB3.0と他のSpringクライアントが含まれています。両方とも、同じ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アクセス。

ただし、そのクライアントを同じネットワーク内の他のマシンに移動してもとし、プロバイダのURLを変更してlocalhostの代わりにリモートサーバーIPを指定すると動作しません。 JNDIルックアップの問題が発生し

正確なエラー: エラー500:org.springframework.beans.factory.BeanCreationException:名前を持つBeanを作成エラー「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

自分自身で回答しています。エラーは解決されました。 私は仮想マシンで作業します。すべての開発者イメージは特定のVMからコピーされ、 はWASコンフィグレーション(ホスト名、セル、ノードなど)を持ってきました。リモートアクセス は、サーバ をホストしているサーバのserverindex.xml内のすべてのホスト名を修正した後に動作しました。

関連する問題