2013-06-04 10 views
6

Tôi có rất nhiều điểm cuối được chú thích với @WebService(targetNamespace = "mynamespace"). Mỗi @WebResult@WebParam có cùng định nghĩa của targetNamespace = "mynamespace".Làm thế nào tôi có thể cấu hình không gian tên đích trên toàn cầu trong các dịch vụ web JAX-WS?

Có cách nào để định cấu hình JAX-WS (triển khai Metro) để sử dụng "mynamespace" làm targetNamespace theo mặc định không?

Tôi muốn sử dụng chú thích mà không có bất kỳ thuộc tính nào và loại bỏ các khai báo trùng lặp, giống như quy ước trên cấu hình.

Trả lời

2

Chỉ đặt targetNamespace trong giao diện thiết bị đầu cuối dịch vụ hoặc dịch vụ thực hiện đậu.

/** 
* Annotated Implementation Object 
*/ 
@WebService(
    name = "CustomerService", 
    targetNamespace = "http://org.company.services" 
) 
public class CustomerService { 
    @WebMethod 
    @WebResult(name="CustomerRecord") 
    public CustomerRecord locateCustomer(
     @WebParam(name="FirstName") String firstName, 
     @WebParam(name="LastName") String lastName, 
     @WebParam(name="Address") USAddress addr) { 
     ... 
    } 
}; 

Nếu @WebResult hoặc @WebParam không có targetNamespace, mặc định là các targetNamespace cho Web Service.

Mặt khác, bạn có thể tránh tất cả chú thích và chỉ sử dụng @WebService nếu bạn không cần thứ gì đó tùy chỉnh với JAX-B.

Xem thêm tại JSR-181 Web Services Metadata for the JavaTM Platform

+6

Khi tôi bỏ qua 'targetNamespace' tại '@ WebResult' và tại' @ WebParam' XML được tạo ra trong phản ứng SOAP có một không gian tên cho thẻ ngoài cùng XML (ví dụ ' '), nhưng những cái bên trong sử dụng không gian tên mặc định (ví dụ' '). Điều tương tự cũng xảy ra với các tham số (' 'thay vì' '). – timomeinen

+0

Người ta sẽ nghĩ ví dụ trên sẽ hoạt động, nhưng tiếc là nó không thích các đề cập về thời gian ở trên. Tại sao một cái gì đó rất đơn giản không dễ dàng để đạt được? Phải có một cách để không thường xuyên sao chép và dán không gian tên này trên mọi chú thích WebParam và WebResult. – GreenieMeanie

Các vấn đề liên quan