11

有人可以向我解释 CXF 的以下行为吗?

我有简单的网络服务:

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的 in 接口(用于 Spring),但我不想在生成的 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 回答