2013-03-11 26 views
9

私は2つのモジュールを持っています:ejbとwarとそれを含むearモジュール。モジュールが正常にビルドが、私はGlassFishのために耳を展開しようとすると、私はこのエラーを受け取る:無効なejb jar:ejbがゼロです。

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.|#] 

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

答えて

2

あなたはWARやEARファイルにEJBを追加する必要があります。ただ、新しいクラスを作成し、私が間違っていた、何を理解@Stateless

+28

(お使いのIDEから直接、プロジェクトを実行していない)GlassFishの中でそれを展開し、&はMavenを使ってプロジェクトをインストール構築しようとすると、 * do *適切に注釈を付けられたクラスがあり、まだ*このエラーが発生しています。 – 8bitjunkie

+1

ここに答えがあります。答えが間違っている理由はここにあります。誰も前進しませんでした。次回はこのコメントを書いているのではなく、あなたが汚れたスクラブを答えてください。注:これはまだ誰もこの質問のために前進させていませんが、誰もがこのルールに従えば、スタックオーバーフローはコミュニティとして前進します。誰かがこの質問に答えてください。 – Booster

+1

私の友人、彼は新しいです。 –

3

でそれに注釈を付けます。問題は実行コンフィギュレーションで、私はIntellij Ideaを使用していました。実行コンフィギュレーションでは、earモジュールを実行する前にビルドとmakeを行いました。私はこれを削除し、インストール後に正常に展開しました。

私は、これは非常に具体的な構築されており、私はここで、リードした、これはおそらく一部のユーザーに有用であろうので、それは代わりにOPのIDEのNetbeansのを使用していますが、知っている
1

私は次のビルドた: NetbeansのエンタープライズアプリケーションをGlassfishの4.1 のJava EE 7

Mavenの と私は、以前の非Mavenのエンタープライズアプリケーションから移行しようとしたとクローンは非常に私が予想ように動作しませんでした、私は削除することを転がっ古いEJB jarがありました。

  1. がその周りに横たわっ何EJBのjarファイルが存在しないべきではありませんtheresのを確認してください:

    私はそれを修正するためにかなりの数のことを行っていました。誤ってejbモジュールのjarファイルが複数回含まれていないことを確認してください。同じエラーが発生する可能性があります(手動で耳を配置してネットビーンズを配布するとエラーになることがあります)。

  2. 私は私のEJBアプリケーションの@Remoteインターフェースを使用していました。今、あなたはあなたの戦争にあなたのEJBをインポートするべきではありません、あなたが掃除する前に、あなたの戦争またはEJBのいずれかを更新すると、(これは、ノートの詳細です)正しく説明https://docs.oracle.com/javaee/7/tutorial/ejb-intro004.htm
  3. として注釈を使用し、クリーンでそれらを構築する必要があり、建物あなたの耳(聞こえる右か?)。
  4. あなたはセッションBeanのインタフェースを使用している場合は、新しいプロジェクトのmaven> javaアプリケーションを作る、別の瓶に入れなければなりません。永続エンティティで同じことをします。 ejbとwarプロジェクトの両方にこれらを依存関係として追加します。
  5. モジュールは、EJBと見なされるために(これは特に、私には関係ありませんが、それを実行するためには、少なくとも1 @StatelessあなたのEJBモジュール内のJavaクラスの(または私は@Stateful思う)注釈を持つべきです)。

私が忘れてしまったことはもうありましたが、それでも問題が発生した場合は更新を試みます。

+0

また、アプリケーションの展開を解除すると、clean + buildの再デプロイメントがうまくいきました。 – klonq

0

ただ、彼らので、この質問に着陸人々のほとんどがそうだろう

関連する問題