[
https://issues.redhat.com/browse/WFLY-14132?page=com.atlassian.jira.plugi...
]
Cheng Fang commented on WFLY-14132:
-----------------------------------
While it is better to use {{deploymentUnit.getName()}} to determine the deployment type,
the [deployment
scanner|https://github.com/wildfly/wildfly-core/blob/master/deployment-sc...]
seems to assume the exploded directories always ends with certain extensions (.jar, .war,
.ear, .rar, .sar). By looking at docs and examples, they all use such directories with
proper extensions.
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.
--
This message was sent by Atlassian Jira
(v7.13.8#713008)