2017-02-09 1 views
2

Red Hat JBoss Developer Studio Version: 10.2.0.GA Construire id: GA-v20161125-1418-B55 Date de construction: 20161125-1418oreille déployé à partir IDE échoue, mais l'installation de build Maven fonctionne

J'ai un projet EAR Maven avec des projets séparés pour:

guerre ejb-jar ejb-client (interfaces locales)

Si je lance un mvn clean install sur le projet parent de la ligne de commande, je peux déployer oreille générée fichier à jboss eap7 sans problème. Toutefois, si j'effectue un nettoyage/construire tout de l'IDE, puis sélectionnez la gestion que sur le serveur, je reçois l'erreur suivante:

Caused by: java.lang.IllegalStateException: WFLYEE0042: Failed to 
construct component instance 
     Caused by: java.lang.IllegalArgumentException: Can not set 
com.hsntech.hif.eao.OperationsCache field 
com.hsntech.hif.application.HIFManagement.opCache to 
com.hsntech.hif.eao.OperationsCache$$$view8"}} 

le projet jar ejb-client contient l'interface:

@Local 
public interface OperationsCache { 

    Map<String, OperationMapping> getOperationsMaps() throws HIFEJBException; 

    void resetCache(); 
} 

et la impelemtation de ejb.jar contient:

@Singleton 
@ConcurrencyManagement(ConcurrencyManagementType.CONTAINER) 
public class OperationsCacheImpl implements OperationsCache, Observer { 

l'EJB est créé dans le projet de guerre dans cette classe:

@Singleton 
@Startup 
public class HIFManagement implements HIFManagementMBean { 

@EJB 
private OperationsCache opCache; 
+0

L'injection semble échouer dans une classe com.hsntech.hif.application.HIFManagement. Montrez ce code aussi s'il vous plaît. – Gimby

Répondre

0

Mon argent va au problème de chargement de classe. Avoir Eclipse construire et empaqueter votre application n'est pas exactement à l'abri des erreurs. IDE conservera ses propres instructions de construction, comment assembler votre application dans un artefact .ear déployable. Vous pouvez jouer avec les paramètres dans les paramètres du projet/l'assemblage Web. Je suppose que si vous comparez l'oreille construite Eclipse avec celle construite par maven, il y aura des différences dans les classes contenues dans les modules ou les bibliothèques.
Si vous utilisez le plugin maven ejb, pour filtrer les classes d'implémentation du module ejb-client, je ne pense pas qu'il existe un moyen de faire fonctionner la même chose dans Eclipse. Cela étant dit, je ne pense pas que vous ayez réellement besoin d'un module séparé pour ejb-client. Le module de guerre dans l'oreille aura accès à toutes les classes contenues dans les supermodules de pot du module d'oreille parent. Il suffit donc d'ajouter ejb-jar en tant que dépendance à votre module de guerre avec la portée provided.

0

Je vais vous donner un remède à tous les problèmes possibles: 1. Réorganiser ordre de modules à pom parent:

<modules> 
    <module>core-module</module> 
    <module>depends-on-core</module> 
    <module>depends-on-core2</module> 
    <module>depends-on-depends-on-core</module> 
</modules> 
  1. mvn eclipse:clean ne vous inquiétez pas développeur Studio est basé sur eclipse donc ce ne sera pas un problème.
  2. mvn eclipse:eclipse

  3. Exécuter sur le serveur

0

Conseils généraux: Ne pas le faire d'Eclipse de toute façon, il est sujette à des erreurs aléatoires dues à classloading, etc ...

Mais voici quelques conseils possibles:

  • vérifiez si vous utilisez le même Maven runtime depuis la console et Eclipse.Certains Eclipse distros navire avec une étrange accumulation dans la version

  • vérifier si Eclipse est configuré pour ignorer certains plugins Maven

  • de vérifier si elle fonctionne JBoss-déploiement via la console. Il y a un plugin. Si vous pouvez vous mettre au travail, vous pouvez l'utiliser depuis Eclipse, au lieu de la fonctionnalité intégrée.