2017-05-23 1 views
1

Je travaille avec jee et wildfly depuis quelques jours maintenant j'ai un problème. J'ai créé quelque chose comme ceci:@Produces cause Bean nom ambigu

@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(); 
} 
} 

Ensuite, je tryied utiliser #{books} dans jsf mais je suis exception:

2017-05-23 08: 49: 07447] oreille artefact: oreille: Erreur lors de artefact déploiement. Voir le journal du serveur pour plus de détails.

[23/05/2017 08: 49: 07448] oreille artefact: oreille: java.lang.Exception: { "WFLYCTL0080: Services a échoué" => { Lab6 "jboss.deployment.unit \.". oreille \ "WeldStartService" => "org.jboss.msc.service.StartException en service jboss.deployment.unit \." Lab6.ear \ » WeldStartService. Impossible de démarrer le service

causée par: org.jboss.weld.exceptions.DeploymentException: WELD-001414: Le nom du bean est ambigu.Les livres de noms résout en beans:

  • Méthode Producer [Liste] avec des qualificatifs [@default @Named @Any] a déclaré que [[BackedAnnotatedMethod] @Produces @Named publics app.service.BookService.getAllBooks()],

  • Méthode Producer [Liste] avec qualificateurs [@Default @Named @Any] déclarés comme [[BackedAnnotatedMethod] @Produits @Named public app.service.BookService.getAllBooks()] "}," WFLYCTL0412: Services requis qui ne sont pas installés: "=> [ "jboss.deployment.unit \" Lab6.ear \], "de WFLYCTL0180: avec services manquants/dépendances non disponibles "" WeldStartService." => non définie}

Quelle est la source du problème.

+0

Veuillez partager des informations sur votre structure de déploiement. Je suppose que je serai l'AER et que vous aurez une dépendance deux fois, ce qui donnera deux producteurs identiques. Assurez-vous que le 'BookService' est sur un seul emplacement dans votre déploiement. – Siliarus

Répondre

0

L'erreur vient du fait que vous avez 2 fèves de type Livre. Pour clarifier voir ce example ici, comment la classe et le producteur sont deux bees avec le meme nom. Et voici un autre exemple du même tipycall mistake. Vérifiez les deux. Vous avez un autre bean avec le nom books soomewhere dans votre code

+0

Même problème, rien n'a changé – Hadson

+0

J'ai mis à jour l'anwer, où dans votre code avez-vous un autre haricot appelé livres? peut-être un producteur ou une classe ou un consommateur? –

1

Cela ressemble que vous avez construit vos composants de fichiers EAR mal:

  • le pot EJB est dans le fichier EAR lui-même;
  • le pot EJB est également dans le répertoire WEB-INF/lib de votre fichier WAR

Cela vous donnera deux copies du même haricot.