How can we get the EJB module name dynamically for JNDI on EAP 7 we have looked into the post on stack overflow here to get the module name
URL url = clazz.getResource("");
String [] strArray = url.getPath().split("/");
for (int i=0; i<strArray.length; i++){
if (strArray[i].contains(".jar")){
moduleName = strArray[i].substring(0, strArray[i].length() - 4);
break;
}
}
jndiName = "java:app/"+moduleName+"/"+clazz.getSimpleName()+"!"+clazz.getCanonicalName();
Is there a cleaner way
java:app/<module-name>/<bean-name>!<fully-qualified-bean-interface-name>
Overriding EJB module name by using
ejb-jar.xml
<?xml version="1.1" encoding="UTF-8"?>
<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"
version="3.1">
<module-name>my-module</module-name>
</ejb-jar>
For application name overriding use application name in application.xml
The above solution helps in making application versioning information separate from its dependency for example while creating JNDI name to look up remote EJB in EAP 7.