]
RH Bugzilla Integration commented on WFLY-939:
----------------------------------------------
James Livingston <jlivings(a)redhat.com> changed the Status of [bug
Class-Path manifest entries for WARs-in-EAR not handled properly
----------------------------------------------------------------
Key: WFLY-939
URL:
https://issues.jboss.org/browse/WFLY-939
Project: WildFly
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: Server
Reporter: James Livingston
Assignee: Stuart Douglas
Fix For: 8.0.0.Alpha1
ManifestClassPathProcessor handles the processing of Class-Path entries in deployments.
The handling of those entries in sub-deployments is broken.
https://github.com/doctau/examples/tree/master/war-manifest-classpath builds an EAR
containing a utility JAR and two WARs, where both WARs refer to the jar via Class-Path
manifest headers. The jar is not in the EAR's library directory nor in
application.xml
The resulting module setup will result in the jar being added to the first WAR's
module, and the remaining WAR(s) depending on a separate "jar classloader". All
WARs should depend on the single shared jar classloader.
When ManifestClassPathProcessor.handlingExistingClassPathEntry() runs for the first war,
it will call createAdditionalModule(), which calls createResourceRoot(). The
"deploymentUnit.addToAttachmentList(Attachments.RESOURCE_ROOTS, resourceRoot)"
adds it to the resource roots for that WAR.
When handlingExistingClassPathEntry() runs for the second (and subsequent) WAR, it will
already be in the additionalModules list, so
"target.addToAttachmentList(Attachments.CLASS_PATH_ENTRIES,
moduleSpecification.getModuleIdentifier())" gets run.
I believe the step of adding it to the CLASS_PATH_ENTRIES attachment needs to happen on
the first WAR (so it is added as a module dependency), and it should not be added to the
DU RESOURCE_ROOTS so it is not in the WAR's own classloader.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: