如何在EAP 7上为JNDI动态获取EJB模块名称 我们查看了堆栈溢出here上的帖子以获取模块名称
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();
是否有更清洁的方式
java:app/<module-name>/<bean-name>!<fully-qualified-bean-interface-name>
答案 0 :(得分:2)
使用
覆盖EJB模块名称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>
对于应用程序名称覆盖在application.xml中使用应用程序名称
上述解决方案有助于使应用程序版本信息与其依赖关系分离,例如在创建JNDI名称以在EAP 7中查找远程EJB时。