2012-07-13 151 views
6

我試圖將基於Jax-WS的Web服務遷移到JBoss 7,但應用程序(部署爲war)在啓動時失敗以啓動監聽器。錯誤listenerStart - JaxWS - JBoss as 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 (...) 

錯誤消息引用失敗,由於先前的錯誤但是沒有錯誤打印在日誌中。有問題的應用包JAX-WS-RT這樣的:

<dependency> 
     <groupId>sun-jaxws</groupId> 
     <artifactId>jaxws-rt</artifactId> 
     <version>2.1.7</version> 
    </dependency> 

如果我改變了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 (…) 

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> 

我無法理解什麼是錯。我如何解決這個問題並部署應用程序?

思考:

  1. 我缺少的依賴?
  2. 我可以重新配置戰爭以使用Jboss內部JaxWS而不進行重大重構嗎?
  3. 如果我不能使用jboss內部JaxWS版本,我可以強制Jboss使用我捆綁在戰爭中的Jaxws版本嗎? (如果是這樣,那麼JaxWs需要什麼依賴關係?)

回答

7

使用JBoss AS7(Java EE6)時,實際上不需要將WSServlet作爲servlet類放入web.xml中。而是你必須有使用@WebService

註解類的類名

所有你想要做的就是確保在您的JBoss配置(例如standalone.xml),你必須擴展Web服務啓用:

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