2013-03-21 36 views
9

Ai đó có thể giải thích cho tôi về hành vi sau của CXF?Cách loại trừ phương thức khỏi CXF WebService - hành vi lạ

Tôi có WebService đơn giản:

import javax.jws.WebMethod; 

public interface MyWebService { 

    @WebMethod 
    String method1(String s); 

    @WebMethod 
    String method2(String s); 

    @WebMethod(exclude = true) 
    String methodToExclude(String s); 

} 

Tôi muốn có tôi methodToExclude trong giao diện (đối với mùa xuân), nhưng tôi không muốn có phương pháp này trong tập tin WSDL được tạo ra. Đoạn mã trên thực hiện chính xác điều đó.

Nhưng khi tôi thêm @WebService chú thích để giao diện tôi nhận được lỗi:

import javax.jws.WebMethod; 
import javax.jws.WebService; 

@WebService 
public interface MyWebService { 

    @WebMethod 
    String method1(String s); 

    @WebMethod 
    String method2(String s); 

    @WebMethod(exclude = true) 
    String methodToExclude(String s); 

} 

org.apache.cxf.jaxws.JaxWsConfigurationException: The @javax.jws.WebMethod(exclude=true) cannot be used on a service endpoint interface. Method: methodToExclude

Ai đó có thể giải thích điều này với tôi? Có gì khác biệt? Ngoài ra tôi không chắc chắn nếu nó sẽ làm việc tốt sau này, nhưng tôi đã không tìm cách làm thế nào để loại trừ các methodToExclude khi tôi sử dụng @WebService.

Trả lời

5

Các @ javax.jws.WebMethod (exclude = true) được sử dụng vào việc thực hiện:

public class MyWebServiceImpl implements MyWebService { 
    ... 
    @WebMethod(exclude = true) 
    String methodToExclude(String s) { 
     // your code 
    } 
} 

Đừng bao gồm methodToExclude phương pháp trong giao diện:

@WebService 
public interface MyWebService { 
    @WebMethod 
    String method1(String s); 

    @WebMethod 
    String method2(String s); 

} 
+1

@Betlista không thể đủ khả năng để đưa ra methodToExclude từ giao diện để đáp ứng mùa xuân, tất cả các ông cần phải làm là để bao gồm '@WebMethod (exclude = true)' chỉ trong thực hiện. –

1

của nó muộn nhưng Tôi muốn chip trong câu trả lời của tôi.

  1. Loại bỏ tất cả các @WebMethod khi họ là không bắt buộc và chỉ cần thiết khi một phương pháp phải được loại trừ.

    import javax.jws.WebMethod; 
    import javax.jws.WebService; 
    
    @WebService 
    public interface MyWebService { 
    
        String method1(String s); 
    
        String method2(String s); 
    
        String methodToExclude(String s); 
    
    } 
    
  2. Thêm @WebMethod (exclude = true) để giao diện thực hiện chỉ

    public class MyWebServiceImpl implements MyWebService { 
    
        String method1(String s) { 
        // ... 
        } 
    
        String method2(String s) { 
        // ... 
        } 
    
        @WebMethod(exclude = true) 
        String methodToExclude(String s) { 
        // ... 
        } 
    }