1

私の主な目的は、WebSphere 用に作成された EJB 2.x アプリケーションを、Tomcat サーバー用にデプロイ可能な Web アプリケーションに移行することです。しかし、私はこれをほぼ1 対 1 の移行として行いたいと考えています。

そこで、TomEE (apache-tomee-plus-1.0.0) をセットアップし、サブディレクトリ '/apps' の構成を展開ディレクトリとして保持します。

「*.war」ファイルを「/apps」ディレクトリに置くと、OpenEJB はアーカイブを正常に解凍してロードします。しかし、ログに EJB がロードされていません。OpenEJB は「/apps/BdbWeb/META-INF」の「ejb-jar.xml」を無視すると思います。

ログスニップ:

INFO main OpenEJB.startup.config - Extracting jar: C:\Entwicklung\apache-tomee-plus-1.0.0\apps\BdbWeb.war
INFO main OpenEJB.startup.config - Extracted path: C:\Entwicklung\apache-tomee-plus-1.0.0\apps\BdbWeb
DEBUG main OpenEJB.options - Using default 'openejb.tempclassloader.skip=none'  Possible values are: none, annotations, enums, all or NONE or ALL
DEBUG main OpenEJB.options - Using default 'openejb.webservices.enabled=true'
DEBUG main OpenEJB.options - Using default 'tomee.jaxrs.deploy.undeclared=false'
DEBUG main OpenEJB.options - Using default 'openejb.webservices.enabled=true'
DEBUG main OpenEJB.options - Using default 'openejb.check.classloader=false'
INFO main OpenEJB.options - Using 'openejb.descriptors.output=false'
INFO main OpenEJB.options - Using 'openejb.descriptors.output=false'
INFO main OpenEJB.options - Using 'openejb.validation.output.level=VERBOSE'
INFO main OpenEJB.startup.config - Enterprise application "C:\Entwicklung\apache-tomee-plus-1.0.0\apps\BdbWeb.war" loaded.

少なくとも 1 つの注釈 (@Remote または @Stateful など) を Java クラスに追加すると、対応するログ エントリが表示されます。そのため、OpenEJB は Annotations を見つけました。

しかし、多くのクラスと大きな ejb-jar.xml ファイルがあります。各クラスに正しいアノテーションを手動で付けるのは避けたい... ! ですから、エラーを見つけるのを手伝ってくれることを願っています。

多分それは構造の問題ですか?war ファイルには次の構造があります。

  • BdbWeb.war
    • ページ
      • *.jsp
    • 画像
      • *.jpg
    • メタINF
      • ejb-jar.xml
      • マニフェスト.MF
      • openejb-jar.xml (手動で作成。これが役立つことを期待しましたが、そうではありません)
    • スタイルシート
      • *.css
    • WEB-INF
      • クラス
          • クラスを含むディレクトリ
        • log4j.xml
        • hibernate.cfg.xml
      • ライブラリ
        • *.jar
      • web.xml
    • index.jsp

openejb.servicemanager.enabled「system.properties」ファイル のプロパティをすでに設定していますtrueが、これにより、エンティティまたは Bean エントリのない xml ファイルのみが生成されました。

OpenEJB で使用される特定の ejb-jar.xml を取得するにはどうすればよいですか?

ところで: 自己作成した「openejb-jar.xml」は本当に必要ですか?

4

1 に答える 1

2

わずかな微調整のみが必要です。Java EE 7 で「.WAR 内の EJB」機能に必要な場所は次のとおりです。WEB-INF/ejb-jar.xml

これを確認して警告を発することをお勧めします。ここでチケットを作成しました

補足:

  • いいえ、openejb-jar.xml必要ありません
  • 設定openejb.servicemanager.enabledも不要

openejb.servicemanager.enabledTomEE で必須であることが示されているドキュメントを見つけましたか? もしそうなら、ドキュメントへのポインタは素晴らしいでしょう - 私はそれが削除されていることを確認します.

于 2012-08-19T00:24:05.863 に答える