2011-11-18 5 views
18

今日私の同社のサーバーを同じバージョンにアップグレードする準備として、ローカルのGlassfishサーバーを3.1.1にアップグレードしました。新しいサーバーでうまくいくようにWebサービスプロジェクトを変換しようとしていて、ロードブロックを襲った。モジュールを定義しようとするとMavenがプロジェクトの依存として認識しません

私の耳のpomファイルには、以前はwebappとejbの両方が依存関係としてリストされていました。 webappのpomでは、依存関係としてejbもリストされていました。 3.1.1 Glassfishのためにこの設定を展開しようとすると、私はこのエラーを受け取っ:

Error occurred during deployment: Exception while deploying the app [ear] : Cannot resolve reference Local ejb-ref name=name,Local 3.x interface =interface,ejb-link=null,lookup=,mappedName=,jndi-name=,refType=Session because there are 2 ejbs in the application with interface interface. Some of the possible causes: 1. The EJB bean class was packaged in an ear lib library (or through any other library mechanism which makes the library visible to all component modules), this makes all the component modules include this bean class indirectly. 2. The EJB bean class was packaged in a component module which references the EJB, either directly or indirectly through Manifest, WEB-INF/lib. The EJB bean class should only be packaged in the declaring ejb module and not the referencing modules. The referencing modules should only include EJB interfaces.. Please see server.log fo .... msg.seeServerLog

基本的に私はので、私は2つの異なる領域での依存関係としてEJBをリストされていることを言っていると信じて、Glassfishのはdoesnの3.1.1探している依存関係は分かりません。これは2.1.1の問題ではありませんでした。このため、私は耳の依存を取り除きました。それはまだ耳の有効なポンの一部であると見られています。

ただし、earがapplication.xmlファイルを生成すると、ファイルからすべてのejb情報が省略されます。今すぐアプリケーションを展開することはできますが、何かを実行しようとすると、ejbsに関してNameNotFoundExceptionsが取得されます。

私はタグを使用して手動で耳のポンポンにEJBモジュールを追加しようとしましたが、私はプロジェクトをビルドしようとすると、エラーメッセージが出ます:私は見ているにもかかわらず

Artifact[ejb] is not a dependency of the project.

これを耳のための効果的なpom私は従属としてリストされたejbを見ることができます。

Glassfish 3.1.1のより厳格なルールセットに準拠した状態で、正しくapplication.xmlファイルを生成するにはどうすればよいですか?

さらに詳しい情報が必要な場合はお知らせください。ありがとうございます。

+0

私は実際にこの問題に遭遇しました。そして、私はポムを修正することによってそれを修正することができました。あなたはあなたのPOMを投稿することができますので、私は見て、あなたに何を変更するかを示すことができますか?会社の機密性が高い場合は、パッケージ名を別のものに変更します。 – EpicOfChaos

答えて

24

答えはかなりシンプルになってしまいましたが、私はそれを少し蹴っています。 WebアプリケーションのPOMファイルでは、私はちょうどEJBの依存関係にスコープの行を追加する必要がありました。これにより

<dependency> 
    <groupId>com.groupId</groupId> 
    <artifactId>webservice-service-ejbs</artifactId> 
    <version>${project.version}</version> 
    <type>ejb</type> 
    <scope>provided</scope> 
</dependency> 

を、私はapplication.xmlに正しく生成とGlassFish 3.1.1、耳のポンポンでEJBの依存関係を保つことができます同じ名前のejbクラスが複数あると考えると、混乱することはありませんでした。

編集:ここでは、EJBの依存関係が耳ポンポンのように私を助けた人に

<dependency> 
    <groupId>com.groupId</groupId> 
    <artifactId>webservice-service-ejbs</artifactId> 
    <type>ejb</type> 
</dependency> 

感謝を見えるものです。

+2

あなたはear pomコードであなたのejb依存関係を提供できますか? – curious

+1

必ず。遅れて申し訳ありませんが、しばらくログオンしていません。 – lowell