]
Brian Stansberry reassigned WFLY-14132:
---------------------------------------
Assignee: Cheng Fang (was: Brian Stansberry)
jboss-ejb3.xml is ignored for exploded deployments
--------------------------------------------------
Key: WFLY-14132
URL:
https://issues.redhat.com/browse/WFLY-14132
Project: WildFly
Issue Type: Bug
Components: EJB
Affects Versions: 14.0.1.Final, JBoss AS7 7.1.1.Final, 21.0.1.Final
Reporter: Jan-Willem Gmelig Meyling
Assignee: Cheng Fang
Priority: Major
Labels: ejb-jar.xml, jboss-ejb3.xml
{{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.
Code from:
[
https://github.com/wildfly/wildfly/blob/master/ejb3/src/main/java/org/jbo...]
{code:java}
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;
}
{code}
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.