多数の JAR を含む EAR ファイルがあり、これらの JAR の 1 つにローカル セッション Bean (EJB3) が含まれています。これらのセッション Bean の JNDI ルックアップを、EAR にも含まれている (この場合は EJB と同じ JAR にある) 管理されていない POJO 内から実行する必要があります。Glassfish EJB FAQに従ってみましたが、何を試しても javax.naming.NameNotFoundException を受け取り続けます。
私はいくつかのことについて確信が持てません。ejb-jar.xml はどこに配置すればよいですか (EAR の META-INF と JAR の META-INF を試しました)。sun-ejb-jar.xml は必要ですか? ejb-link とは正確には何ですか? 何が間違っている可能性がありますか (私の構成は、ローカル ルックアップの FAQ に記載されているものとほとんど同じです)。
私が試した構成の一部と結果を以下にリストします。
<enterprise-beans>
<session>
<ejb-name>ITestBean</ejb-name>
<ejb-class>com.test.TestBean</ejb-class>
<ejb-local-ref>
<ejb-ref-name>ITestBean</ejb-ref-name>
<local>com.test.ITestBean</local>
</ejb-local-ref>
</session>
</enterprise-beans>
アプリケーションはデプロイされますが、JNDI ルックアップは null を返します。
<enterprise-beans>
<session>
<ejb-name>ITestBean</ejb-name>
<ejb-class>com.test.TestBean</ejb-class>
<ejb-local-ref>
<ejb-ref-name>ITestBean</ejb-ref-name>
<local>com.test.ITestBean</local>
<ejb-link>ITestBean</ejb-link>
</ejb-local-ref>
</session>
</enterprise-beans>
アプリケーションがデプロイされない: EJB 3.0 ref のローカル ビジネスとリモート ビジネスの指定を判別できません。未解決の EJB-Ref ITestBean@jndi。
<enterprise-beans>
<session>
<ejb-name>ITestBean</ejb-name>
<ejb-class>com.test.TestBean</ejb-class>
<ejb-local-ref>
<ejb-ref-name>ITestBean</ejb-ref-name>
<local>com.test.ITestBean</local>
<ejb-link>MyJar.jar#ITestBean</ejb-link>
</ejb-local-ref>
</session>
</enterprise-beans>
アプリケーションがデプロイされません: エラー: 未解決: MyJar.jar#ITestBean。
<enterprise-beans>
<session>
<ejb-name>ITestBean</ejb-name>
<local>com.test.ITestBean</local>
<ejb-local-ref>
<ejb-ref-name>ITestBean</ejb-ref-name>
</ejb-local-ref>
</session>
</enterprise-beans>
EjbDescriptor の処理中にエラーが発生しました