CXF生成webservice动态客户端
2017-09-29 18:08
246 查看
1、我这边的webservice接口是一个比较简单例子就不完全贴出,此接口的代码了,只展示主要部分
1.1接口代码
1.2接口实现类代码
1.3接口工具类代码
以上是发布的接口代码。
2.用CXF生成动态客户端
2.1pow.xml文件,注意要导三个包
2.2生成动态客户端代码
我这边是采用json来传输多个参数,在网上有看到很多是用实体,感觉挺麻烦的,个人不是很建议。对于数据量比较大的可以使用xml的形式传输,在接口程序段增加一个解析xml的方法就可以了,客户端这边就只需要以xml字符串的格式作为入参,比较方便。
3.效果展示
3.1发布我写的接口
![](https://img-blog.csdn.net/20170929180636032?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhbmdsaW4xMjIw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
3.2运行动态客户端程序。
1.1接口代码
package com.ffcs.oss.webservice; import java.util.Map; import javax.jws.WebService; @WebService public 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运行动态客户端程序。
相关文章推荐
- idea+maven+spring+cxf创建webservice应用(二)生成客户端程序
- CXF生成webservice客户端
- wsdl文件用SoapUI快速创建WebService,CXF生成客户端代码
- 用apache-cxf生成webservice客户端的时候报错Parameter: shead already exists for method
- 用apache-cxf生成webservice客户端的时候报错Parameter: shead already exists for method
- 利用WSDL2java 生成cxf webservice 客户端代码
- 利用CXF生成webservice客户端代码
- CXF动态客户端调用webservice实例 遇到的问题
- CXF动态客户端调用JDK自带Webservice安全校验
- CXF生成调用webservice的客户端
- CXF客户端开发--动态调用webservice
- webService(cxf)生成客户端报错解决
- CXF生成调用webservice的客户端
- 使用cxf生成webservice客户端调用异常解决
- CXF使用教程(二)——webService自动生成客户端代码
- webservice 服务端例子+客户端例子+CXF整合spring服务端测试+生成wsdl文件 +cxf客户端代码自动生成
- CXF生成webservice客户端 发生undefined element declaration
- CXF生成调用webservice的客户端
- 用cxf生成webservice的java客户端代码
- wsdl文件用SoapUI快速创建WebService,CXF生成客户端代码