13

ejbとwar、およびそれらを含むearモジュールの2つのモジュールがあります。モジュールは正常にビルドされますが、earをGlassfishにデプロイしようとすると、次のエラーが発生します。

glassfish3.1.2|javax.enterprise.system.tools.admin.org.glassfish.deployment.admin|_ThreadID=17;_ThreadName=Thread-2;|Exception while deploying the app [EarModule] : Invalid ejb jar [BackEnd-1.0-SNAPSHOT.jar]: it contains zero ejb. 
Note: 
1. A valid ejb jar requires at least one session, entity (1.x/2.x style), or message-driven bean. 
2. EJB3+ entity beans (@Entity) are POJOs and please package them as library jar. 
3. If the jar file contains valid EJBs which are annotated with EJB component level annotations (@Stateless, @Stateful, @MessageDriven, @Singleton), please check server.log to see whether the annotations were processed properly.|#]

私は本当に何をすべきかわかりません、私は私のような多くの質問を見つけました、しかし解決策はありませんでした。

4

5 に答える 5

3

何が悪かったのか分かりました。問題は実行構成にあり、Intellij Ideaを使用しており、実行構成では、earモジュールを実行する前にビルドと作成が行われました。これを削除し、Mavenをインストールした後、正常にデプロイされました。

于 2013-03-11T15:38:40.247 に答える
2

WARまたはEARファイルにEJBを追加する必要があります。新しいクラスを作成し、それに注釈を付けるだけです@Stateless

于 2013-03-11T10:11:09.797 に答える
2

これは非常にビルド固有であり、OPのIDEの代わりにNetbeansを使用していることを私は知っていますが、私がここでリードしていたため、これは一部のユーザーにとって役立つ可能性があります。

次のビルドがありました:Maven Glassfish 4.1 JavaEE7を使用したNetbeansEnterpriseアプリケーション

以前の非Mavenエンタープライズアプリケーションからの移行を試みましたが、クローンが期待どおりに機能しませんでした。削除した古いejbjarがいくつかありました。

私はそれを修正するためにかなりのことをしました:

  1. そこにあるべきではないejbjarが周りにないことを確認してください。誤ってejbモジュールjarを複数回含めていないことを確認してください。これにより、同じエラーが発生する可能性もあります(earを手動でデプロイし、netbeansを介してデプロイすると、異なるエラーが発生することがあります)。
  2. EJBアプリケーションで@Remoteインターフェースを使用しました。これで、EJBをWarにインポートする必要はありません。説明されているように、アノテーションを正しく使用する必要がありますhttps://docs.oracle.com/javaee/7/tutorial/ejb-intro004.htm
  3. (これはもっと注意です)戦争やejbのいずれかを更新するときは、耳を掃除して構築する前に、それらを掃除して構築してください(面白いですね)。
  4. セッションBeanにインターフェースを使用している場合は、それらを別のjarに入れて、新しいプロジェクトMaven>Javaアプリケーションを作成する必要があります。永続エンティティでも同じことを行います。これらを依存関係としてejbプロジェクトとwarプロジェクトの両方に追加します。
  5. これは特に私には関係ありませんが、(モジュールがejbと見なされるために)ejbモジュール内のjavaクラスに少なくとも1つの@stateless(または@stateful)アノテーションが必要です。

忘れてしまったことをもう少しやらなければならなかったかもしれませんが、それでも問題が発生した場合は、以下のコメントを参考にして更新してみます。

于 2016-06-27T15:12:00.877 に答える
0

Mavenを使用してプロジェクトをビルドおよびインストールしてから、Glassfishにデプロイしてみてください(IDEから直接プロジェクトを実行しないでください)。

于 2017-02-04T15:37:28.523 に答える
0

私もこの問題に遭遇しました。これは、新しいEJBプロジェクトをEclipseワークスペースにインポートしたときに発生しました。EARデプロイメントアセンブリにまだ含まれていないため、プロジェクトにはGlassfishライブラリへの参照がありませんでした。

Beanファイルを保存すると、IDEはのjavax.inject.Singleton代わりに自動的にインポートされjavax.ejb.Singletonます。これにより、コードは警告なしでコンパイルされましたが、元の投稿と同じエラーがスローされます。

于 2018-09-17T08:15:07.577 に答える