2

我们如何在 EAP 7 上为 JNDI 动态获取 EJB 模块名称,我们在此处查看了有关堆栈溢出的帖子以获取模块名称

  • 我们不想在 ejb-jar.xml 中覆盖。
  • 我们不想在 maven 中自定义模块名称,所以它是固定的。
  • 我们也不是在循环,因为我们目前正在执行

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> 
4

1 回答 1

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 时。

于 2017-08-18T10:08:00.143 回答