单文件WSDL,非模块化

最近在使用CXF做WebService Sever端,接口与实现类不在一个包下。

实现类如下:

1 @WebService(serviceName = "Demo"
2         , targetNamespace = "http://demo.api.beiifeng.com"
3         , endpointInterface = "com.beiifeng.api.Demo"
4 )
5 @SOAPBinding(style = SOAPBinding.Style.DOCUMENT
6         , use = SOAPBinding.Use.LITERAL
7         , parameterStyle = SOAPBinding.ParameterStyle.WRAPPED
8 )
9 public class DemoImpl implements Demo {

接口如下:

1 @WebService
2 public interface Demo {

结果在浏览器中的得到的WSDL描述多了<wsdl:import>节,该节另引别处描述:

当我们处于一个局域网需要将wsdl文档给另一个局域网创建客户端用时,该方法将会导致一些问题。因为在这个文档中并没有<type>描述。

解决办法:

将接口和实现类的@WebService注解中的targetNamespace保持一直即可,即接口修改如下

1 @WebService(targetNamespace = "http://demo.api.beiifeng.com")
2 public interface Demo {

此时的WSDL描述如下:

这样,我们便可以将wsdl文档描述保存发送另一端进行开发即可。

参考 https://stackoverflow.com/questions/16011661/cxf-autogenerates-wsdl-imports-itself#answer-32736182

猜你喜欢

转载自www.cnblogs.com/beiifeng/p/9274099.html