0

アプリケーションを Jboss 3 から Jboss 7 に移行しています。jboss-as-7.1.1.Final を使用しています。アプリケーションは、いくつかの EJB .jar を持つ .ear と、すべてのサーブレットと jsp ページを含む .war です。EJB は CMP エンティティ Bean とセッション Bean の両方であり、Xdoclet を多用します。アプリケーションのビルドとデプロイは正常に行われていますが、明らかに JNDI の問題が原因で、EJB を正しくインスタンス化できません。Jboss 7 では JNDI の使用方法が変更されていることは知っていますが、これらの変更を EJB 2 xdoclet コードに適用する方法に関するドキュメントはまばらで、存在しません。次の xdoclet を持つセッション Bean コード UserManagerEJB.java があるとします。

* @ejb.bean
*     name="UserManager"
*     jndi-name="ejb/UserManager"
*     type="Stateless"
*     view-type="remote"
*     transaction-type="Container"

UserManagerEJB は、次の xdoclet を使用してエンティティ Bean ユーザーを参照します。

* @ejb.ejb-ref
*     ejb-name="User"
*     view-type="local"
*     ref-name="ejb/UserLocal"

エンティティ Bean コード UserEJB.java には次の xdoclet 宣言があります。

* @ejb.bean
*    name="User"
*    local-jndi-name="ejb/UserLocal"
*    primkey-field="userId"
*    type="CMP"
*    view-type="local"

jndi-name、local-jndi-name、および ref-name を指定する適切な Jboss AS 7 の方法は何ですか?

Web アプリケーションの .war/WEB-INF/web.xml で ejb-ref-name として使用する JNDI 名は何ですか?

以前ejb/EJBNAMEはうまくいきましたが、それを行うと、NamingException が発生します。すべての JNDI 名を java:app/myuser/User!com.myco.module.myuser.ejb.entity.UserLocal やみくもに何かに変更してもうまくいかず、率直に言って、私はあまりよく理解していないものを変更するというネズミの穴に落ち始めます。JNDI 命名スキームの変更は、私が慣れ親しんでいたものをはるかに超える大きな飛躍のようです。

誰かが新しい JNDI 命名スキームの簡潔な説明を提供できる場合は、それも非常に高く評価されます!

4

1 に答える 1

0

これは私にとってはうまくいきました。

「test.ear」という名前の耳と、ステートレス セッション Bean「com.test.SessionClass」があり、SessionClass が「com.test.SessionClassRemote」を実装しているとします...JNDI ルックアップは次のようになります。

ctx.lookup("test/SessionBean/com.test.SessionClass!com.test.SessionRemote"); 
于 2013-06-18T20:31:01.110 に答える