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

时间:2017-07-27 08:18:33

标签: jboss jboss-eap-7

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

  • 我们不想在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> 

1 个答案:

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