1.引入jar包
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.3.4</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.2.2</version>
</dependency>
2.使用动态调用
2.1创建公共方法返回Client
private ClassLoader cl = Thread.currentThread().getContextClassLoader();
private Client getClientByUrl(String url){
Thread.currentThread().setContextClassLoader(cl);
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
Client client = dcf.createClient(url);
return client;
}
2.2简单入参调用实例
"getExUserList"为方法名
beginDate, endDate, begin, end都为入参
public JSONArray getGwallUserInfo(String begin, String end){
Client client = getClientByUrl(gwallUrl);
String beginDate = "1900-01-01";
String endDate = "2030-01-01";
try {
JSONArray getExUserList =JSONArray.parseArray(JSONObject.toJSONString(client.invoke("getExUserList", beginDate, endDate, begin, end)[0]));
return getExUserList;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
3.复杂入参调用实例
"xxx.xx.xxx.AccessToken":为类名,路径需和服务端保持一直(下文有查看类路径方法)
"setApplication","setToken"为类属性。
public JSONArray getUserByOrg(String orgId){
ObjectMapper om = new ObjectMapper();
Client client = getClientByUrl(gwallUrl);
try {
String paramsStr = "";
// 加载类为服务端自定义对象命名空间
Object accessToken =Thread.currentThread().getContextClassLoader().loadClass("xxx.xx.xxx.AccessToken").newInstance();
// 调用set方法设置参数
Method setAccNbr = accessToken.getClass().getMethod("setApplication", String.class);
setAccNbr.invoke(accessToken, gwApplication);
Method setToke = accessToken.getClass().getMethod("setToken", String.class);
setToke.invoke(accessToken, gwToken);
paramsStr = om.writeValueAsString(accessToken);
JSONArray getExUserList =JSONArray.parseArray(JSONObject.toJSONString(client.invoke(userByOrgUrl,accessToken, orgId)[0]));
return getExUserList ;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
4.cxf工具的用法(可以用来查看路径)
4.1下载cxf包
官网地址:http://cxf.apache.org/download.html
百度网盘:链接:https://pan.baidu.com/s/1OMYkXfUYoqs6l81EYBWZAA 提取码:heeb
4.2解压缩包,通过cmd命令进入到bin目录下(cd cxf\bin的路径)
命令省略
4.3使用wsdl2java命令生成客户端代码
执行命令:wsdl2java -p org.logink.ws -d f:\logink\src -all E:\wsdl3.1-credit\LogisticsCreditService\LogisticsCreditService.wsdl
wsdl2java用法: wsdl2java -p com -d src -all aa.wsdl
-p 指定其wsdl的命名空间,也就是要生成代码的包名:
-d 指定要产生代码所在目录
-client 生成客户端测试web service的代码
-server 生成服务器启动web service的代码
-impl 生成web service的实现代码
-ant 生成build.xml文件
-all 生成所有开始端点代码:types,service proxy,,service interface, server mainline, client mainline, implementation object, and an Ant build.xml file.
查看路径:
执行wsdl2java命令时不指定生成代码的包名及-p ,则默认路径j就是服务端类路径