2017-04-18 1 views
0

maven 프로젝트로 jboss eap 7.0.0에 ejb jar 파일을 배포하려고합니다. 프로젝트는 Config-1.3.1.jar을 프로젝트의 pom.xml에 추가 한 종속성으로 사용합니다. 나는 jboss와 maven을 처음 사용하기 때문에 내가 여기서 잘못하고있는 것을 정말로 알지 못합니다.jboss eap 7에 .jar를 배포 할 때 반사 정보 오류가 발생했습니다.

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 

사람이 내가 뭘하는지 알고 있습니까 : 여기에 pom.xml 파일

<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> 
하지만 보스하기 위해 항아리를 배포 할 때, 나는 오류 (들)을 얻을이다 여기서 뭐라구? 필요한 경우 더 많은 정보를 게시하게되어 기쁩니다.

답변

0

당신은이 종속성의 클래스를 만들 수있는 방법을 찾아야 : 아마도이 하나

<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> 

당신의 EJB 항아리에.

일반적으로 이러한 jar를 EJB jar와 함께 EAR 파일로 패키징하면됩니다.

또는 Class Loading in WildFly 10에 설명 된 방법 중 하나를 사용할 수 있습니다.

궁극적으로 EJB가 수행하는 작업과 클라이언트 (있는 경우)가 배포되는 위치에 따라 다릅니다.

예를 들어 당신의 프로젝트의 포장 유형을 변경하는 것이 더 쉬울 수 있습니다

(당신이 provided 범위를 제거하는 경우) 의존성이 인의 WEB-INF/lib 디렉토리에 추가됩니다 그래서
<artifactId>xxx-xxx-xxx-ejb</artifactId> 
<packaging>war</packaging> 

EAR 파일을 작성하는 것보다 훨씬 쉽습니다.

Java EE 6 및 7은 EJB를 WAR 파일에 배포 할 수 있도록합니다.

관련 문제