11

誰かがCXFの次の動作を私に説明できますか?

私は単純な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);

}

(Spring用の)インターフェイスを使用したいの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:@ javax.jws.WebMethod(exclude = true)は、サービスエンドポイントインターフェイスでは使用できません。メソッド:methodToExclude

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

4

2 に答える 2

7

@javax.jws.WebMethod(exclude=true) が実装で使用されます。

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

メソッド methodToExclude をインターフェイスに含めないでください。

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

    @WebMethod
    String method2(String s);

}
于 2013-08-01T10:21:14.007 に答える
2

遅くなりましたが、回答を差し上げたいと思います。

  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. インターフェイス実装のみに @WebMethod(exclude = true) を追加

    public class MyWebServiceImpl implements MyWebService {
    
      String method1(String s) {
        // ...
      }
    
      String method2(String s) {
        // ...
      }
    
      @WebMethod(exclude = true)
      String methodToExclude(String s) {
        // ...
      }
    }
    
于 2014-12-03T18:06:14.773 に答える