-
Bug
-
Resolution: Done
-
Major
-
14.0.1.Final, JBoss AS7 7.1.1.Final, 21.0.1.Final
-
Undefined
-
---
-
---
EjbJarParsingDeploymentUnitProcessor distinguishes between a WAR and JAR deployment based on the file extension of the name of the deployment root. For exploded deployments however, this deployment root may be a folder without any file extension. As a result the logic fails to detect either a JAR or WAR file and the ejb-jar.xml and jboss-ejb3.xml files are ignored. A better way could be to determine the extension from the name of DeploymentUnit instead.
private static VirtualFile getDescriptor(final VirtualFile deploymentRoot, final String descriptorName) { // Locate the descriptor final VirtualFile descriptor; // EJB 3.1 FR 20.4 Enterprise Beans Packaged in a .war if (isWar(deploymentRoot)) { // it's a .war file, so look for the ejb-jar.xml in WEB-INF descriptor = deploymentRoot.getChild(WEB_INF + "/" + descriptorName); } else if (deploymentRoot.getName().toLowerCase(Locale.ENGLISH).endsWith(JAR_FILE_EXTENSION)) { descriptor = deploymentRoot.getChild(META_INF + "/" + descriptorName); } else { // neither a .jar nor a .war. Return return null; } if (descriptor == null || !descriptor.exists()) { // no descriptor found, nothing to do! return null; } return descriptor; }
I encountered this issue on WildFly 14.0.1.Final, but the code is also present in the current master and goes back to versions as early as 7.1.