JBoss 7中WAR包内EJB的JNDI命名方案

4

有谁知道如何修改在JBoss 7.2(EAP 6.1)下部署的war中ejb的全局jndi名称的“module”组件?

根据规范,模块名称与基本war名称相同,在我的情况下包括版本号。

以下是来自Oracle的规范:

java:global/[<application-name>]/<module-name>/<bean-name>

在我的情况下,它产生了:
java:/global/mywar-1.0/MyService

What I would like is:

java:/global/mywar/MyService

我知道在部署之前可以修改war文件的名称,但我更希望通过配置文件明确地命名模块。我尝试使用ejb-jar.xml中的module-name,但没有效果。

2个回答

9

解决方案:最终我不得不包含/更新web.xml的后期3.0规范的xsd/命名空间。这允许在web.xml中指定“module-name”元素,该元素将在创建jndi名称时使用。在JBoss EAP 6.1上测试并工作。

以下是web.xml头和module-name元素:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                         http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
     id="WebApp_ID" version="3.0">

     <module-name>mywar</module-name>

0
你需要做的是创建一个 jboss-web.xml 文件并将其放置在 META-INF 目录下,与 web.xml 文件相邻。在其中添加以下内容:
<jboss-web>
    <context-root>mywar</context-root>
</jboss-web>

干杯!

如果这个被打包在EAR中,你可以使用application.xml来实现这个功能。


1
感谢您的回复。实际上,我已经设置好了上下文根,并且它正在按预期工作(设置应用程序URL的上下文根)。我试图调整的是打包在war中的ejb分配的jndi名称。当我设置上下文根时,jndi名称仍然包含基本war名称(包括版本)。 - Bill Pfeiffer
抓住了 - 很抱歉我不能提供更多帮助。 - jgitter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接