2017-09-27 4 views
0

Eine EAR-Anwendung besteht aus einem EJB-Modul + WAR-Modul. Beide sind abhängig von Deltaspike (1.8.0) Bibliotheken. Während die Anwendung unter JBoss EAP 7.0 bereitstellen, zeigt die Ausgabe die folgende Ausnahme:Deltaspike-Initialisierung fehlgeschlagen unter 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) 

Das Problem mit CDI-Ansicht Erweiterung ony aus dem WAR-Modul passieren. Die Initialisierung ist vom EJB-Modul korrekt.

Was ist los mit der WAR. Ist es ein Konfigurationsproblem?

+1

Wie haben Sie Deltaspike installiert? Wie es aussieht, haben Sie zwei Versionen von Deltaspike installiert. –

+0

Beide in der EAR-Anwendung eingebetteten EJB- und WAR-Module verwenden deltaspike-Module. Sie verwenden die gleiche Version. Es scheint, dass beim Laden des EJB-Containers und der Webanwendung ein Fehler auftritt. Das EJB-Laden funktioniert einwandfrei, aber das Laden der Webanwendung schlägt fehl. – ruddy32

+1

Sorry ich hätte nicht "Version" verwenden sollen. Wie es aussieht ist, dass Sie Deltaspike auf zwei verschiedene Klassenlader geladen haben. Ist Deltaspike im 'EAR/lib'-Verzeichnis? Stellen Sie sicher, dass Sie keine Deltaspike-Bibliothek in Ihrem 'EAR/WAR/WEB-INF/lib'-Verzeichnis haben. –

Antwort

0

Ja, es ist ein Konfigurationsproblem, wie James R. Perkins in den Kommentaren vorgeschlagen hat.

Wenn Sie die EAR (in jedem beliebigen ZIP-Datei-Viewer) öffnen, werden Sie feststellen, dass es zwei Kopien von Deltaspike Bibliotheken:

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 

Das verwirrt den Klassenlader und verursacht den obigen Fehler.

Um dies zu beheben, Deltaspike Bibliotheken als <scope>provided</scope> im IST POM markieren, so dass sie in dem Krieg nicht gebündelt werden WEB-INF/lib:

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

Ich hatte ein ähnliches Problem und konnte es auf diese Weise beheben.