2017-04-25 2 views
0

Dans Airpal utilisé Guice pour DI cadre, dans mon projet, nous utilisons glassfish 4.1 payara serveur RESTful web services, Jersey version 2.21. numéro 1: si l'utilisation Guice a quelques exceptions d'exécutionGuice Exception de déploiement

Une erreur est survenue lors du déploiement: Exception lors du chargement de l'application: échec de déploiement CDI: WELD-001409: dépendances ambigües pour le type Validator avec des qualificatifs @default au point d'injection [UnbackedAnnotatedField] @ Injecter privé org.hibernate.validator.internal.cdi.interceptor.ValidationInterceptor.validator à org.hibernate.validator.internal.cdi.interceptor.ValidationInterceptor.validator (ValidationInterceptor.java:0) Dépendances possibles: - org.apache.bval. [email protected], - ValidatorBean [id = org.hibernate.validator.internal.cdi.ValidatorBean_default]. S'il vous plaît voir server.log pour plus de détails. Question2: si n'a pas utilisé Guice comment se lier client airlift dans le maillot 2.21 RESTful.

S'il vous plaît aidez-moi. Quelqu'un sait ce problème qui utilise Airpal + presto + glassfish4.1 + jersey2.21 + maven3.0

Répondre

0

Il semble que, puisque Guice et Java EE CDI standard utilisent les mêmes annotations @Inject, le mécanisme CDI est déclenché mais échoue pour trouver des dépendances, car votre applcation est configurée avec Guice. La solution la plus simple avec GlassFish/Payara est de désactiver le CDI implicite lors du déploiement de l'application (il y a une case à cocher dans la console d'administration lors du déploiement ou une option pour la commande asadmin).

Vous pouvez également désactiver CDI dans l'archive d'application dans un descripteur XML. Jetez un oeil à Docs Payara Server sur disabling CDI or filtering CDI scanning. Notez que la plupart des options sont disponibles uniquement dans Payara Server et non dans GlassFish 4.1.

Le CDI est déclenchée soit par - mettre beans.xml dans votre application (je ne vous attendez pas mis là, parce que vous utilisez Guice, mais vérifiez si elle n'a pas été généré par votre IDE pour une raison quelconque) - annoter une ou plusieurs classes avec des annotations qui déclenchent le CDI - par ex. toute annotation EJB (@Stateless, @Stateful, ...)