有人可以向我解释一下CXF的以下行为吗?
我有简单的WebService:
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
(对于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
的方法。
答案 0 :(得分: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);
}
答案 1 :(得分:2)
已经很晚了,但我想填写我的答案。
删除所有 @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);
}
将@WebMethod(exclude = true)添加到仅接口实现
public class MyWebServiceImpl implements MyWebService {
String method1(String s) {
// ...
}
String method2(String s) {
// ...
}
@WebMethod(exclude = true)
String methodToExclude(String s) {
// ...
}
}