環境
- リモートインターフェイスを備えた2つのステートレスEJB。EJB1はEJB2に注入されます。
/// EJB1
package com.xxx.layer1;
@Remote
public interface EJB1Remote {
}
@Stateless (mappedNamed="com.xxx.EJB1")
public class EJB1 implements EJB1Remote {
}
/// EJB2
package com.xxx.layer2;
import com.xxx.layer1;
@Remote
public interface EJB2Remote {
}
@Stateless (mappedNamed="com.xxx.EJB2")
public class EJB2 implements EJB2Remote {
@EJB(mappedNamed="com.xxx.EJB1")
EJB1Remote ejb1;
}
EJB2は、いくつかのオプションパッケージ(マニフェストで宣言)も使用します
WebLogicアプリケーションサーバー(10.3.3)
2つのEJBは2つの別々のJARファイルにパッケージ化されています
問題
2つのJARファイルがEARファイルにパッケージ化されてデプロイされている場合、依存性注入は機能します。ただし、EJB1を最初にデプロイしてWeblogic( com.xxx.EJB1#com.xxx.layer1.EJB1Remote )でグローバルJNDI名を確認した後でも、それらを個別にデプロイすると、EJB2のデプロイメントはClassNotFoundException:com.xxx.layer1で失敗します。 EJB1Remote