2017-09-27 11 views
0

EAR 어플리케이션은 EJB 모듈 + WAR 모듈로 구성됩니다. 둘 다 Deltaspike (1.8.0) 라이브러리에 의존합니다.Deltaspike init가 JBoss EAP 7에서 실패했습니다.

Caused by: java.util.ServiceConfigurationError: org.apache.deltaspike.core.spi.config.ConfigSourceProvider: Provider org.apache.deltaspike.core.impl.config.DefaultConfigSourceProvider not a subtype 
at java.util.ServiceLoader.fail(ServiceLoader.java:239) 
at java.util.ServiceLoader.access$300(ServiceLoader.java:185) 
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:376) 
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404) 
at java.util.ServiceLoader$1.next(ServiceLoader.java:480) 
at org.apache.deltaspike.core.util.ServiceUtils.loadServiceImplementations(ServiceUtils.java:66) 

문제는 WAR 모듈에서 CDI보기 확장 ONY 일어날 : 제이보스 EAP 7.0에서 응용 프로그램을 배포하는 동안 는, 출력은 다음과 같은 예외를 보여줍니다. 초기화는 EJB 모듈에서 올 Y 른 것입니다.

WAR에 무슨 문제가 있습니까? 구성 문제입니까?

+1

어떻게 Deltaspike를 설치 했습니까? Deltaspike의 두 가지 버전이 설치되어있는 것 같습니다. –

+0

EAR 애플리케이션에 임베드 된 EJB 및 WAR 모듈 모두 deltaspike 모듈을 사용합니다. 그들은 같은 버전을 사용하고 있습니다. EJB 컨테이너 및 웹 응용 프로그램을로드 할 때 문제가있는 것으로 보입니다. EJB 로딩은 정상적으로 작동하지만 webapp 로딩은 실패합니다. – ruddy32

+1

죄송합니다. "버전"을 사용해서는 안됩니다. Deltaspike를 두 개의 다른 클래스 로더에로드하는 것 같습니다. Deltaspike는'EAR/lib' 디렉토리에 있습니까? 'EAR/WAR/WEB-INF/lib' 디렉토리에 Deltaspike 라이브러리가 없는지 확인하십시오. –

답변

0

제임스 퍼킨스 (James R. Perkins)가 의견에서 제안한 것처럼 구성 문제입니다.

당신이 (모든 ZIP 파일 뷰어로) EAR을 열 경우 Deltaspike 라이브러리의 두 개의 사본이 있다는 것을 알 수 있습니다 :

application.ear 
├── lib 
│ ├── deltaspike-core-api-1.x.y.jar 
│ └── deltaspike-core-impl-1.x.y.jar 
├── application.war 
| └── WEB-INF 
│  └── lib 
│   ├── deltaspike-core-api-1.w.z.jar 
│   └── deltaspike-core-impl-1.w.z.jar 

이 클래스 로더를 혼란 위의 오류가 발생가. 그들이 WAR WEB-INF/lib에 번들로 제공되지 않도록

는 WAR POM에서 <scope>provided</scope>로 Deltaspike 라이브러리를 표시,이 문제를 해결하려면 다음
<dependency> 
     <groupId>org.apache.deltaspike.core</groupId> 
     <artifactId>deltaspike-core-api</artifactId> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.deltaspike.core</groupId> 
     <artifactId>deltaspike-core-impl</artifactId> 
     <scope>provided</scope> 
    </dependency> 

나는 비슷한 문제를 가지고 있으며이 방법으로 문제를 해결 할 수 있었다.