2つのEARにデプロイされたJavaWebアプリケーションがあります。1つはUI層(を含むWAR module
)用で、もう1つはビジネス層(を含むEJB module
)用です。両方の層がWebSphereApplicationServer 7にデプロイされます。これらの層は、EJB3.0ステートレスセッションBeanを介して接続されます。BeanはJNDIを介して検索されます。
2つのアプリケーションは現在同じWASサーバー上にありますが、将来的には異なるサーバーに展開される予定です。EJBを検索しようとすると、エラーが発生します。
ルックアップエラーをデバッグしようとして、WASサーバーでJNDI名前空間ダンプを実行しました。
./dumpNameSpace.bat -host localhost -port 10031 > namespace.log
私の各EJBは、次のエラーでリストされました。
(top)/nodes/U4752879Node01/servers/server1/ejb/au/gov/immi/emed/ejb/CrtEJB
au.gov.immi.emed.ejb.CrtEJB
ERROR: Received the following naming exception: com.ibm.ws.naming.util.InvalidObjectException: The IOR associated with the binding "CrtEJB" relative to the context "U4752879Node01Cell/nodes/U4752879Node01/servers/server1/ejb/au/gov/immi/emed/ejb" could not be resolved. If the binding is for an application object, make sure the application has started successfully. IOR: IOR:<removed>
これがEJBリモートインターフェースです。
@Remote
public interface CrtEJB extends EMedEJB, EMedCrtService
{
}
そして、Beanの実装:
@Stateless(name = "CrtEJB")
@Remote(value = CrtEJB.class)
public class CrtEJBBean extends AbstractEMedEJBBean implements CrtEJB
{
...
}
そして、ibm-ejb-jar-bnd.xmlファイル:
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_0.xsd">
<session name="CrtEJB" simple-binding-name="ejb/au/gov/immi/emed/ejb/CrtEJB" />
...
</ejb-jar-bnd>
エラーが発生する原因は何ですか?エラーは、ibm-ejb-jar-bnd.xml
私が必要としないファイルがなくても同じです。このエラーがUIルックアップの失敗の原因ですか、それともとにかく機能しているはずですか?(この場合、UIエラーを投稿します)。