2011-05-23 2 views
1

J'ai un projet multimodule maven avec un ejb avec un webservice, un lib et une application batch. L'application de traitement par lots et le module ejb partagent des énumérations, qui se trouvent dans le module lib. Lorsque vous tentez de renvoyer une de ces énumérations à partir de la lib dans une méthode de service Web, il prétend qu'il n'y a pas d'ejbs valide dans le fichier jar ejb. En outre, lorsque j'utilise un autre de ces enums comme attributs dans une entité JPA en utilisant @Enumerated(EnumType.STRING), j'obtiens une erreur disantjaxws et EclipseLink refusent d'utiliser les enums de lib

"... n'est pas un type valide pour un mappage énuméré.L'attribut doit être défini comme une énumération Java. "

Je me demande simplement pourquoi utiliser ces énumérations de cette façon est un problème? Existe-t-il des solutions de contournement en plus de les déclarer deux fois?

Répondre

0

je suis tombé sur le même problème, et c'était parce que je testais avec Arquillian et pour une raison quelconque, je l'avais oublié d'ajouter le paquet contenant le enum réelle dans le shrinkwrap.

Alors peut-être il y a quelque chose empêchent la persistance fournisseur (eclipselink dans mon cas) de voir votre classe enum. C'est ce qui se passerait dans votre cas, parce que vous avez plusieurs modules.

0

J'ai eu le même problème avec un projet sur lequel je travaillais. J'ai un bundle commun qui contient les interfaces générales (et enums) que le bundle de persistance n'a pas reconnu. Par conséquent, j'ai obtenu l'exception ci-dessus (même si le bundle de persistance avait des dépendances pour le bundle commun via les packages importés.)

J'ai résolu ce problème en incluant le bundle commun dans le chemin de génération Java du bundle de persistance:

projet -> propriétés du projet -> Java build path/Projects; // ajouter le lot contenant les énumérations ici