This blog has moved to
http://blog.matthias-reining.com

Die bestehenden Artikel bleiben vorerst alle bei blogspot. Neue Artikel veröffentliche ich allerdings nur noch auf http://blog.matthias-reining.com

Freitag, 2. Dezember 2011

eclipse - JEE Web Projekt mit exploded JAR-File unter WEB-INF\lib ?!?


Wenn ich in eclipse ein Maven JEE Web Projekt  habe (maven archetype: jboss-javaee6-webapp version: 7.0.2.CR) , dass eine dependency auf eine eclipse Maven EJB-JAR Projekt hat (ejb-javaee6 version:1.5), bekomme ich folgende Fehlermeldungen im JBoss AS 7:

01:07:52,533 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-3) MSC00001: Failed to start service jboss.deployment.unit."is-pm-test.war".STRUCTURE: org.jboss.msc.service.StartException in service jboss.deployment.unit."is-pm-test.war".STRUCTURE: Failed to process phase STRUCTURE of deployment "is-pm-test.war"
       at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:121)
       at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1824)
       at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1759)
       at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) [:1.6.0_20]
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [:1.6.0_20]
       at java.lang.Thread.run(Unknown Source) [:1.6.0_20]
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: org.jboss.as.server.deployment.DeploymentUnitProcessingException: failed to process "/D:/java-server/jboss/jboss-as-7.0.2.Final/standalone/deployments/is-pm-test.war/WEB-INF/lib/is-temporaldata-0.0.1-SNAPSHOT.jar"
       at org.jboss.as.web.deployment.WarStructureDeploymentProcessor.deploy(WarStructureDeploymentProcessor.java:118)
       at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:115)
       ... 5 more
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: failed to process "/D:/java-server/jboss/jboss-as-7.0.2.Final/standalone/deployments/is-pm-test.war/WEB-INF/lib/is-tmp-0.0.1-SNAPSHOT.jar"
       at org.jboss.as.web.deployment.WarStructureDeploymentProcessor.createWebInfLibResources(WarStructureDeploymentProcessor.java:173)
       at org.jboss.as.web.deployment.WarStructureDeploymentProcessor.createResourceRoots(WarStructureDeploymentProcessor.java:151)
       at org.jboss.as.web.deployment.WarStructureDeploymentProcessor.deploy(WarStructureDeploymentProcessor.java:112)
       ... 6 more
Caused by: java.util.zip.ZipException: error in opening zip file
       at java.util.zip.ZipFile.open(Native Method) [:1.6.0_20]
       at java.util.zip.ZipFile.<init>(Unknown Source) [:1.6.0_20]
       at java.util.jar.JarFile.<init>(Unknown Source) [:1.6.0_20]
       at java.util.jar.JarFile.<init>(Unknown Source) [:1.6.0_20]
       at org.jboss.vfs.spi.JavaZipFileSystem.<init>(JavaZipFileSystem.java:95)
       at org.jboss.vfs.spi.JavaZipFileSystem.<init>(JavaZipFileSystem.java:81)
       at org.jboss.vfs.VFS.mountZip(VFS.java:408)
       at org.jboss.vfs.VFS.mountZip(VFS.java:434)
       at org.jboss.as.web.deployment.WarStructureDeploymentProcessor.createWebInfLibResources(WarStructureDeploymentProcessor.java:168)
       ... 8 more


Ursache:
Das eclipse Maven Plugin deployed zum einem das WAR Projekt exploded (was sehr gut ist!). Weiterhin deployed es aber auch alle abhängigen JAR Dateien unter WEB-INF\lib (mvn dependencies) exploded, die auf geöffneten eclipse Projekten stammen.

Der App Server kann damit verständlicherweise nicht umgehen (class files unter WEB-INF\lib, wo gibt’s denn sowas?).

Abhilfe:
Dieses Verhalten kann verhindert werden, in dem man in den abhängigen Projekten folgende Einstellung vornimmt:

Project Properties (des EJB-JAR eclipse Projektes) -> Project Facets -> Utility Module aktivieren.

Anschließend warden die entsprechenden JAR Dependencies nicht mehr exploded abgelegt J

Keine Kommentare:

Kommentar veröffentlichen