在 EAP 7 上为 JNDI 动态获取 EJB 模块名称

Getting EJB module name dynamically for JNDI on EAP 7

我们如何为 EAP 7 上的 JNDI 动态获取 EJB 模块名称 我们已经查看了堆栈溢出 here 上的 post 以获取模块名称


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> 

使用

覆盖 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 时。​​