2017-05-23 10 views
1

私はジーとワイルドフライで数日間働いています。私はこのようなものを作成しました:@Produces原因Beanの名前があいまいです

@Stateless 
public class BookService { 

@EJB 
private BookDao bookDao; 

public void addBook(Book book) { 
    bookDao.saveBook(book); 
} 

public Optional<Book> getBookById(Long id) { 
    return bookDao.getBookById(id); 
} 

public void updateBook(Book book) { 
    bookDao.updateBook(book); 
} 

@Produces 
@Named("books") 
public List<Book> getAllBooks() { 
    return bookDao.getAllBooks(); 
} 
} 

次の私は、JSFで#{books}を使用するようにtryiedをしかし、私は例外だ:中にエラー:

2017年5月23日08:49:07447]アーティファクト耳:耳をアーティファクト 展開。詳細はサーバーログを参照してください。

[2017年5月23日08:49:07448]アーティファクト耳:耳を:のjava.lang.Exception: { "WFLYCTL0080:失敗したサービス" => {LAB6 "jboss.deployment.unit \。"。耳\ => "サービス jboss.deployment.unitでorg.jboss.msc.service.StartException \。" Lab6.ear \」WeldStartService "WeldStartService。": サービスによって引き起こさ

の起動に失敗しました: org.jboss.weld.exceptions.DeploymentException:WELD-001414:Bean名があいまいです。名前帳がBeanに解決されます。

  • 修飾子と

    生産法[一覧] [@default @Named @Anyは]で、

  • 生産法[一覧] [BackedAnnotatedMethod] @Produces()はパブリック app.service.BookService.getAllBooksを@Named]として宣言しました[= BackedAnnotatedMethod] @Produces @Named public app.service.BookService.getAllBooks()] "}、" WFLYCTL0412:Required インストールされていないサービスとして宣言された修飾子[@Default @Named @Any]: "=> [ "jboss.deployment.unit \。" Lab6.ear \ "WeldStartService。 "]、" WFLYCTL0180:不足している/利用できない依存関係を持つ サービス" =>未定義}

問題の原因は何ですか?

+0

展開構造に関する情報を共有してください。私はEARになるだろうと思うし、あなたは2人の依存関係を持っていて、2人の同じ生産者を生み出している。 'BookService'がデプロイメントの1つの場所にあることを確認してください。 – Siliarus

答えて

0

エラーは、Bookタイプの2つのBeanがあるという事実に起因します。これを明確にするために、exampleここで、クラスとプロデューサーが同じ名前の2つのbeensである方法。 そして同じtipycallのもう一つの例mistake。両方を確認してください。 あなたのコード内で名前books soomewhereを持つ別のBeanを持っている

あなたは間違ってあなたのEARファイルコンポーネントを構築しているようにこれが見えます
+0

同じ問題、何も変わっていません – Hadson

+0

私はあなたのコードで書籍と呼ばれる別の豆を持っていますか?多分プロデューサーかクラスか消費者ですか? –

1

  • EJB jarファイルがEARファイル自体です。
  • EJB jarファイルがWARファイルのWEB-INF/libディレクトリにもある

これはあなたに同じBeanの2つのコピーを提供します。

関連する問題