CXF生成webservice动态客户端
来源:互联网 发布:js 倒计时60秒 编辑:程序博客网 时间:2024/06/06 12:24
1、我这边的webservice接口是一个比较简单例子就不完全贴出,此接口的代码了,只展示主要部分
1.1接口代码
package com.ffcs.oss.webservice;import java.util.Map;import javax.jws.WebService;@WebServicepublic interface TestService { public String sayHi( String message);}
1.2接口实现类代码
package com.ffcs.oss.webservice;import java.util.HashMap;import java.util.Map;import test.DataFormatUtil;public class TestServiceImpl implements TestService{ @Override public String sayHi( String message) { Map<String,Object> map = new HashMap<String,Object>(); map = DataFormatUtil.json2Map(message);//json字符串解 析,用实体传参很麻烦不建议使用。 return "Hello! "+map.get("name")+","+map.get("age"); }}
1.3接口工具类代码
package test;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class DataFormatUtil { public static Map<String, Object> json2Map(String jsonStr) { Map<String, Object> map = new HashMap<String, Object>(); JSONObject json = JSONObject.fromObject(jsonStr); for (Iterator localIterator1 = json.keySet().iterator(); localIterator1.hasNext(); ) { Object k = localIterator1.next(); Object v = json.get(k); if (v instanceof JSONArray) { List list = new ArrayList(); Iterator it = ((JSONArray)v).iterator(); while (it.hasNext()) { JSONObject json2 = (JSONObject)it.next(); list.add(json2Map(json2.toString())); } map.put(k.toString(), list); } else { map.put(k.toString(), v); } } return map; }}
以上是发布的接口代码。
2.用CXF生成动态客户端
2.1pow.xml文件,注意要导三个包
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.tedu</groupId> <artifactId>sss</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <!--注意导三个包,不能知道cxf-rt-frontend-jaxws这个包,不然会报Could not find conduit initiator for address:异常 --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>3.1.12</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>3.1.12</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http-jetty</artifactId> <version>3.1.12</version> </dependency> <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> </dependency> </dependencies></project>
2.2生成动态客户端代码
package test;import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;/* * 动态客户端案例 * */public class Test { public static void main(String[] args) { try { JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); org.apache.cxf.endpoint.Client client = dcf.createClient("http://localhost:8090/mywebs/services?wsdl"); //sayHi 为接口中定义的方法名称 str为传递的参数 返回一个Object数组 String str = "{\"name\":\"Jaky\";\"age\":\"24\"}";//当传输的是多个参数时,可以用Json字符串或xml格式传输 Object[] objects=client.invoke("sayHi",str); //输出调用结果 System.out.println(objects[0].toString()); } catch(Exception e) { e.printStackTrace(); } } }
我这边是采用json来传输多个参数,在网上有看到很多是用实体,感觉挺麻烦的,个人不是很建议。对于数据量比较大的可以使用xml的形式传输,在接口程序段增加一个解析xml的方法就可以了,客户端这边就只需要以xml字符串的格式作为入参,比较方便。
3.效果展示
3.1发布我写的接口
3.2运行动态客户端程序。
阅读全文
0 0
- CXF生成webservice动态客户端
- cxf生成webservice客户端
- CXF生成webservice客户端
- cxf生成webservice客户端代码
- webService-cxf方式生成客户端
- 使用CXF生成webService客户端
- cxf生成java客户端 webservice
- 利用WSDL2java 生成cxf webservice 客户端代码
- CXF生成调用webservice的客户端
- apache-cxf-2.2.4生成webservice客户端
- java cxf webservice 生成客户端 调用 服务端
- CXF生成调用webservice的客户端
- CXF生成调用webservice的客户端
- cxf webservice 生成客户端代码以及调用
- WebService apache cxf wsdl 生成客户端代码
- CXF生成调用webservice的客户端
- cxf生成webservice的java客户端代码
- Window系统生成CXF Webservice客户端
- Golang学习之标准库io/ioutil,读取文件,生成临时目录/文件
- cmake cpp构造项目
- Default Activity Not Found
- TextView设置文本不显示
- android 用ViewDragHelper实现IOSAssistiveTouch小圆点(或者其他拖拉效果)
- CXF生成webservice动态客户端
- 珠联璧合:GitLab 10.0版本与Kubernetes的巧妙集成
- 40个Java多线程问题总结
- 【MongoDB】(一)——关于MondoDB索引的总结
- RecyclerView的基础使用与拓展
- 判断字符串中的字符是否完全不同
- 插件Pathfinding+Project+Pro的使用
- 数据库视频总结【一】
- 程序员灯谜,你能猜出几个?