javaee / javaee-spec

Java EE Platform Specification
https://javaee.github.io/javaee-spec
Other
389 stars 69 forks source link

JAR files in the application package referenced by a WAR file might be ignored #38

Closed glassfishrobot closed 9 years ago

glassfishrobot commented 10 years ago

EE.8.5.2 Deploying a Java EE Application: d. For all files in the application package with a filename extension of .jar, but not contained in the lib directory, do the following: (0) ... iii. All other JAR files are ignored unless referenced by a JAR file discovered above using one of the JAR file reference mechanisms such as the Class-Path header in a manifest file. (1)

According to EE.7.2.4 Data Formats JAR files—JAR (Java Archive) files are the standard packaging format for Java technology-based application components, including the ejb-jar specialized format, the Web application archive (WAR) format, the Resource Adapt-er archive (RAR), and the Java EE enterprise application archive (EAR) format a possible meaning of (1) can be that .jar files mentioned in (0) are NOT ignored if they are referenced by some JAR file (this includes also .war files) discovered according to subparagraph a., b. or c. Another possible interpretation is that JAR file discovered above from (1) refers only to subparagraphs d.i. and d.ii.

This ambiguity led to the following situation: GlassFish ignores .jar files referenced from .war files, while WildFly does not ignore them. (Not ignoring them in the before-mentioned case makes much more sense to me.)

The original intention of subparagraph d.iii. should be clarified so it is not ambiguous anymore.

glassfishrobot commented 10 years ago

Reported by bafco

glassfishrobot commented 9 years ago

ldemichiel said: Section EE.8.5.2, item "1." is defining the modules that need to be processed. While "JAR" in section EE.7.2.4 is used to refer to such modules, item "1.d" is also using "JAR" in the restricted sense to refer to .jar files – except however in "1.d.iii" where it is also used to refer to JAR files in the sense of modules.

The following change to "1.d" would make this clearer (and consistent with section EE.7.2.4).

i. If the .jar file contains a META-INF/MANIFEST.MF file with a Main-Class attribute, or contains a META-INF/application-client.xml file, consider the .jar file to be an application client module.

ii. If the .jar file contains a META-INF/ejb-jar.xml file, or contains any class with an EJB component-defining annotation (Stateless, etc.), consider the .jar file to be an EJB module.

iii. All other .jar files are ignored unless referenced by a JAR file discovered above using one of the JAR file reference mechanisms such as the Class-Path header in a manifest file.

We plan to address this in an Java EE 7 MR.

glassfishrobot commented 9 years ago

ldemichiel said: Fixed in Java EE 7 MR

glassfishrobot commented 7 years ago

This issue was imported from java.net JIRA JAVAEE_SPEC-38

glassfishrobot commented 9 years ago

Marked as fixed on Wednesday, October 14th 2015, 2:47:08 pm