2017-07-27 62 views
0

我们怎样才能获得EJB模块名称动态的JNDI对EAP 7 我们看着堆栈溢出here后得到的模块名称获取EJB模块名称动态地对EAP JNDI 7

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

回答

0

重写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名称来查找远程EJB在EAP 7.

重写使用应用程序的名称