错误listenerStart - JaxWS - JBoss as 7

Max*_*ras 6 jax-ws classpath classloader java-ee-6 jboss7.x

我正在尝试将基于Jax-WS的Web服务迁移到JBoss 7,但是应用程序(部署为战争)很难在启动时启动监听器.

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 (...)
Run Code Online (Sandbox Code Playgroud)

由于先前的错误,错误消息引用失败,但日志中不会打印错误.有问题的应用程序捆绑jax-ws-rt像这样:

    <dependency>
        <groupId>sun-jaxws</groupId>
        <artifactId>jaxws-rt</artifactId>
        <version>2.1.7</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

如果我改变了要提供的jax-ws-rt的范围,这将导致一个很好的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 (…)
Run Code Online (Sandbox Code Playgroud)

servlet在web.xml中定义如下.

<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>
Run Code Online (Sandbox Code Playgroud)

我不明白什么是错的.如何解决此问题并部署应用程序?

思考:

  1. 我错过了依赖吗?
  2. 我是否可以重新配置战争以使用Jboss内部JaxWS而无需重大重构?
  3. 如果我不能使用jboss内部JaxWS版本,我可以强迫Jboss使用我在战争中捆绑的Jaxws版本吗?(如果是这样,JaxWs需要哪些依赖项?)

Kor*_*gen 7

使用JBoss AS7(Java EE6),您实际上不需要将WSServlet作为servlet类放在web.xml中.但是你可以使用@Webservice注释类的类名

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

<extensions>
   [...]
   <extension module="org.jboss.as.webservices"/>
</extensions>
Run Code Online (Sandbox Code Playgroud)