2013-03-21 2 views
9

誰かが私にCXFの次の動作を説明することはできますか?CXF WebServiceからメソッドを除外する方法 - 奇妙な振る舞い

私は、単純なWebサービスがあります。

import javax.jws.WebMethod; 

public interface MyWebService { 

    @WebMethod 
    String method1(String s); 

    @WebMethod 
    String method2(String s); 

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

} 

を私は私のmethodToExclude(春用)インターフェースでを持つようにしたいが、私は、生成されたWSDLファイル内でこのメソッドを持っている必要はありません。上記のコードはまったく同じです。

しかし、私は、私はエラーを取得するインターフェイスに@WebService注釈を追加するとき:

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

誰かが私にこれを説明することはできますか?違いは何ですか?後でうまくいくかどうかはわかりませんが、@WebServiceを使用すると、methodToExcludeを除外する方法が見つかりませんでした。

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

    @WebMethod 
    String method2(String s); 

} 

答えて

5

@のjavax.jws.WebMethod実装に使用されている(=真除外)私は私の答えでチップしたいと思います。彼らはオプションであり、方法を除外しなければならない場合にのみ、必要に応じて

  1. はすべてを取り除くには、を@WebMethod。

    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. のみ

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

@Betlistaは、彼が行うために必要なすべてがあり、春を満たすためにインターフェイスからmethodToExcludeを取る余裕がない実装をインタフェースに@WebMethodを(=真除外)を追加します'@WebMethod(exclude = true)'をインプリメンテーションにのみ含めるようにしました。 –

1

その後半しかし:

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

ドントは、インタフェースのメソッドmethodToExcludeを含める: