当在war文件中使用@WebService和@Stateless时,JBoss忽略application.xml中的上下文路径

时间:2011-03-25 00:24:28

标签: java jboss ejb-3.0 application.xml

我有一个ear文件,包含一个war文件和一些jar文件。 application.xml包含以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE application PUBLIC
    "-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN"
    "http://java.sun.com/dtd/application_1_3.dtd">
<application>
  <display-name>Web Application</display-name>
    <module>
        <web>
           <web-uri>web-endpoint-1.0.war</web-uri>
           <context-root>/web</context-root>
        </web>
    </module>
    <module>
        <ejb>backend-1.1.jar</ejb>
    </module>
</application>

此ear文件正在部署到JBOSS AS 6,但是上下文根被忽略,war文件的名称正用于上下文根。

有人能指出为什么Jboss忽略了application.xml中指定的内容吗?

谢谢!


我已经进一步研究了问题,问题是:

在WAR文件中,我有一个无状态会话bean来实现Web服务。当我删除无状态会话bean时,上下文根现在匹配application.xml中指定的那个根据需要。使用@WebService注释在war文件中实现Web服务的最佳解决方案是什么?

2 个答案:

答案 0 :(得分:1)

我找到了解决此问题的方法如下。

我没有对类使用@Stateless注释,而是将带有@WebService注释的类更改为servlet。
这种解决方法消除了war文件中对无状态会话bean的需求,即使这对JavaEE6来说也是可能的 现在部署时war文件的上下文根对应于 application.xml 文件中的上下文根。

答案 1 :(得分:1)

尝试添加注释@WebContext(contextRoot="/YourContextRoot")

这对我有用。