错误listenerStart - JaxWS - JBoss as 7

7

我正试图将一个基于Jax-WS的web服务迁移到JBoss as 7,但该应用程序(部署为war)在启动时无法启动监听器。

ERROR [org.apache.catalina.core.StandardContext] (MSC service thread 1-14) Error listenerStart
ERROR [org.apache.catalina.core.StandardContext] (MSC service thread 1-14) Context [/abc] startup failed due to previous errors
ERROR [org.jboss.msc.service.fail] (MSC service thread 1-14) MSC000001: Failed to start service jboss.web.deployment.default-host (...)

错误信息提到了“由于先前的错误而失败”,但是日志中没有打印任何错误。相关应用程序将jax-ws-rt捆绑在一起,如下所示:
    <dependency>
        <groupId>sun-jaxws</groupId>
        <artifactId>jaxws-rt</artifactId>
        <version>2.1.7</version>
    </dependency>

如果我将jax-ws-rt的范围更改为provided,这会像预期的那样导致ClassNotFound错误。

WARN  [org.jboss.as.ee] (MSC service thread 1-13) JBAS011006: Not installing optional component com.sun.xml.ws.transport.http.servlet.WSServletContextListener due to exception: java.lang.ClassNotFoundException: com.sun.xml.ws.transport.http.servlet.WSServletContextListener (…)

在web.xml中,servlet的定义如下。
<listener>
    <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
</listener>
<servlet>
    <description>JAX-WS endpoint for data service</description>
    <display-name>abc</display-name>
    <servlet-name>abc</servlet-name>
    <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>abc</servlet-name>
    <url-pattern>/services/abc</url-pattern>
</servlet-mapping>

我不明白问题出在哪里,我该如何解决并将应用程序部署?

想法:

  1. 是否缺少依赖项?
  2. 能否重新配置WAR文件以使用Jboss内部JaxWS而无需进行重大重构?
  3. 如果我不能使用Jboss内部的JaxWS版本,我是否可以强制Jboss使用我在WAR中捆绑的Jaxws版本?(如果可以,我需要哪些JaxWs依赖项?)
1个回答

8

使用JBoss AS7(Java EE6),实际上您不需要将WSServlet放入web.xml作为servlet-class。相反,您应该在那里放置带有@Webservice注释的类的类名。

您想要做的就是确保在JBoss配置中(例如standalone.xml)启用了webservices扩展:

<extensions>
   [...]
   <extension module="org.jboss.as.webservices"/>
</extensions>

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