2017-04-18 1 views
0

Je tente de déployer un fichier jar ejb sur jboss eap 7.0.0 en tant que projet maven. Le projet utilise Config-1.3.1.jar comme dépendance que j'ai ajouté au fichier pom.xml de mon projet. Je suis nouveau à jboss et maven donc je ne sais pas vraiment ce que je fais mal ici. Voici le pom.xmlObtention d'une erreur d'infomation lors du déploiement d'un .jar sur jboss eap 7

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<parent> 
    <groupId>xxx.xxx.xxx</groupId> 
    <artifactId>xxx-xxx-xxx-xxx</artifactId> 
    <version>xxx</version> 
</parent> 

<artifactId>xxx-xxx-xxx-ejb</artifactId> 
<name>xxx-xxx-xxx-ejb</name> 
<packaging>jar</packaging> 

<dependencies> 
    <dependency> 
     <groupId>org.jboss.spec.javax.ejb</groupId> 
     <artifactId>jboss-ejb-api_3.2_spec</artifactId> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate.javax.persistence</groupId> 
     <artifactId>hibernate-jpa-2.1-api</artifactId> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.jboss.logging</groupId> 
     <artifactId>jboss-logging</artifactId> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.mockito</groupId> 
     <artifactId>mockito-core</artifactId> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>com.typesafe</groupId> 
     <artifactId>config</artifactId> 
     <version>1.3.1</version> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.javatuples</groupId> 
     <artifactId>javatuples</artifactId> 
     <version>1.2</version> 
     <scope>provided</scope> 
    </dependency> 
</dependencies> 

<build> 
    <finalName>xxx-xxx-xxx-ejb</finalName> 
</build> 

Mais lorsque je tente de déployer le pot à jboss, je reçois l'erreur (s):

09:50:44,211 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-6) 
MSC000001: Failed to start service jboss.deployment.unit."xxx-xxx-xxx-ejb.jar".POST_MODULE: 
org.jboss.msc.service.StartException in service jboss.deployment.unit."xxx-xxx-xxx-ejb.jar".POST_MODULE: WFLYSRV0153: Failed to 
process phase POST_MODULE of deployment "xxx-xxx-xxx- 
ejb.jar" 
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:154) 
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) 
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.RuntimeException: WFLYSRV0177: Error getting reflective information for class xxx.mbean.ConfigCache with ClassLoader ModuleClassLoader for Module "deployment.xxx-xxx-xxx-ejb.jar:main" from Service Module Loader 
at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:70) 
at org.jboss.as.ee.metadata.MethodAnnotationAggregator.runtimeAnnotationInformation(MethodAnnotationAggregator.java:57) 
at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.handleAnnotations(InterceptorAnnotationProcessor.java:106) 
at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.processComponentConfig(InterceptorAnnotationProcessor.java:91) 
at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.deploy(InterceptorAnnotationProcessor.java:76) 
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:147) 
... 5 more 
Caused by: java.lang.NoClassDefFoundError: com/typesafe/config/Config 
at java.lang.Class.getDeclaredMethods0(Native Method) 
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) 
at java.lang.Class.getDeclaredMethods(Class.java:1975) 
at org.jboss.as.server.deployment.reflect.ClassReflectionIndex.<init>(ClassReflectionIndex.java:80) 
at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:66) 
... 10 more 
Caused by: java.lang.ClassNotFoundException: com.typesafe.config.Config from [Module "deployment.xxx-xxx-xxx-ejb.jar:main" from Service Module Loader] 
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:198) 
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:363) 
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:351) 
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:93) 
... 15 more 

Est-ce que quelqu'un sait ce que je fais mal ici? Je serais heureux de poster plus d'informations si nécessaire.

Répondre

0

Vous devez trouver un moyen de rendre les classes dans cette dépendance:

<dependency> 
    <groupId>com.typesafe</groupId> 
    <artifactId>config</artifactId> 
    <version>1.3.1</version> 
    <scope>provided</scope> 
</dependency> 

et peut-être celui-ci:

<dependency> 
    <groupId>org.javatuples</groupId> 
    <artifactId>javatuples</artifactId> 
    <version>1.2</version> 
    <scope>provided</scope> 
</dependency> 

disponible à votre pot EJB. Ceci est normalement accompli en emballant ces pots avec votre pot EJB dans un fichier EAR. Vous pouvez également utiliser l'une des méthodes décrites dans Class Loading in WildFly 10. En fin de compte, cela dépend de ce que font vos EJB et de l'endroit où leurs clients (le cas échéant) sont déployés.

Par exemple, il peut être plus facile de changer votre type d'emballage de projet:

<artifactId>xxx-xxx-xxx-ejb</artifactId> 
<packaging>war</packaging> 

afin que vos dépendances sont ajoutés dans le répertoire WEB-INF/lib (si vous supprimez le champ provided), qui est beaucoup plus facile que de composer un fichier EAR. Java EE 6 et 7 permettent aux EJB d'être déployés dans des fichiers WAR.