场景:他人的服务端暴露的webservice接口,我这边客户端集成了dubbo,所以想用dubbo直接去调用webservice。因为dubbo的官方文档上说dubbo有提供这些功能。
dubbo版本2.3.0以上版本支持。需要在pom里添加依赖,它是基于CXF的frontend-simple和transports-http实现。maven依赖:
<dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-simple</artifactId> <version>2.6.1</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>2.6.1</version> </dependency>
具体做法是:
如果webservice的接口是:http://172.16.123.xxx:8880/xxx/webservice/com.xxx.riviews.webservice.ITongdunService?wsdl
则在dubbo的xml配置里添加
<dubbo:reference id="tongdunServicePortType" interface="com.hylandtec.riviews.webservice.ITongdunService" url="webservice://172.16.123.xxx:8880/xxx/webservice/com.xxx.riviews.webservice.ITongdunService?wsdl"/>
即把url中的http改成webservice,作为dubbo配置中的url,形成点对点的访问。
实际的接口ITongdunService,注意包的路径:
package com.xxxx.riviews.webservice;
/**
* 同盾接口
* Created by cd_huang on 2017/4/19.
*/
public interface ITongdunService {
/**
*
* @param arg0
* @param arg1
* @return
*/
String query(String arg0,String arg1);
}
接口的方法和参数对应webservice声明的方法和参数。
使用的时候在调用的类里加上
@Autowired
private ITongdunService tongdunServicePortType;
String result = tongdunServicePortType.query(a