2012-07-13 44 views
6

Tôi đang cố di chuyển dịch vụ web dựa trên Jax-WS sang JBoss là 7 nhưng ứng dụng (được triển khai dưới dạng chiến tranh) không khởi động được trình nghe khi khởi động.Trình nghe lỗi Khởi động - JaxWS - JBoss dưới dạng 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 (...) 

Các tài liệu tham khảo thông báo lỗi để thất bại do lỗi trước tuy nhiên không có lỗi được in trong nhật ký. Việc áp dụng trong câu hỏi bó JAX-WS-rt như thế này:

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

Nếu tôi thay đổi phạm vi của JAX-WS-rt được cung cấp điều này gây ra một ClassNotFound đẹp như mong đợi.

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 được định nghĩa như thế này trong 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> 

Tôi không hiểu điều gì sai. Làm cách nào để giải quyết vấn đề này và triển khai ứng dụng?

Suy nghĩ:

  1. Tôi có thiếu một sự phụ thuộc?
  2. Tôi có thể cấu hình lại chiến tranh để sử dụng Jboss nội bộ JaxWS mà không cần tái cấu trúc chính không?
  3. Nếu tôi không thể sử dụng phiên bản JbWS jboss bên trong, tôi có thể buộc Jboss sử dụng phiên bản Jaxw mà tôi tham gia trong chiến tranh không? (Nếu vậy, tôi cần những phụ thuộc nào cho JaxWs?)

Trả lời

7

với JBoss AS7 (Java EE6) bạn thực sự không cần phải đặt WSServlet trong web.xml làm lớp servlet. Nhưng thay vào đó bạn sẽ phải có tên lớp của lớp chú thích với @Webservice

Tất cả các bạn muốn làm là đảm bảo rằng trong bạn cấu hình JBoss (ví dụ standalone.xml), bạn có phần mở rộng cho webservices được kích hoạt:

<extensions> 
    [...] 
    <extension module="org.jboss.as.webservices"/> 
</extensions> 
Các vấn đề liên quan