cxf的webservice的xml方式传数据的demo
2016-03-06 11:12
267 查看
1.新建maven项目,再pom中配置需要的jar
2.webservice服务端
3.发布webservice
4.客户端
<dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>2.7.4</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>2.7.4</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http-jetty</artifactId> <version>2.7.4</version> </dependency> <dependency> <groupId>jdom</groupId> <artifactId>jdom</artifactId> <version>1.0</version> </dependency> |
package com.sunkang.webservice; import javax.jws.WebParam; import javax.jws.WebService; import com.sunkang.entity.User; @WebService public interface HelloWord { String sayHi(@WebParam(name="text")String text); String sayHiToUser(User user); //封装Document数据,返回XML字符串 public String XMLInfo() throws Exception; } |
package com.sunkang.webservice; import javax.jws.WebParam; import javax.jws.WebService; import org.jdom.Document; import org.jdom.Element; import com.sunkang.entity.User; import com.sunkang.util.OperationXMLByJdom; @WebService(endpointInterface="com.sunkang.webservice.HelloWord",serviceName="HelloHord") public class HelloWordImp implements HelloWord{ public String sayHi(@WebParam(name="text")String text) { return "HI:"+text; } public String sayHiToUser(User user) { return "name:"+user.getName()+" age:"+user.getAge(); } public String XMLInfo() throws Exception { // 创建根节点 list; Element root = new Element("list"); // 根节点添加到文档中; Document Doc = new Document(root); // 此处 for 循环可替换成 遍历 数据库表的结果集操作; for (int i = 0; i < 5; i++) { // 创建节点 user; Element elements = new Element("user"); // 给 user 节点添加属性 id; elements.setAttribute("id", "" + i); // 给 user 节点添加子节点并赋值; // new Element("name")中的 "name" 替换成表中相应字段,setText("xuehui")中 "xuehui // 替换成表中记录值; elements.addContent(new Element("name").setText("xuehui")); elements.addContent(new Element("age").setText("28")); elements.addContent(new Element("sex").setText("Male")); // 给父节点list添加user子节点; root.addContent(elements); } OperationXMLByJdom xml2String = new OperationXMLByJdom(); String xmlDoc = xml2String.doc2String(Doc); return xmlDoc; } } |
package webServiceApp; import javax.xml.ws.Endpoint; import com.sunkang.webservice.HelloWordImp; public class webServiceApp { /** * 用main的方式发布webservice * @param args */ public static void main(String[] args) { HelloWordImp implementor = new HelloWordImp(); String address = "http://localhost:8080/helloWorld"; Endpoint.publish(address, implementor); } } |
package com.sunkang.client; import org.apache.cxf.endpoint.Client; import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory; import com.sunkang.entity.User; public class TestClient { public static void main(String[] args) { JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance(); Client client = factory.createClient("http://localhost:8080/helloWorld?wsdl"); Object[] objs; try { objs = client.invoke("sayHi", "阿福"); System.out.println(objs[0]+""); objs = client.invoke("XMLInfo"); System.out.println(objs[0]+""); //将服务端的xml字符串解析 } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } |
相关文章推荐
- brew - 可以简单的获取数千种开源工具和函数库的包管理器
- freemarker 超出字符用省略号表示
- erlang趣事五之catch和try_catch
- MemCache在Windows下环境的搭建及启动
- Java学习笔记
- [LeetCode]206. Reverse Linked List
- Linux第二周学习总结——操作系统是如何工作的
- [国嵌攻略][108][Linux内核链表]
- wcf
- 使用CSS实现的平面阴影进度条效果
- JavaScript中三种异步上传文件方式
- jquery数据库在线查询条件编辑器QueryBuilder使用经验
- 《BI那点儿事—数据的艺术》目录索引
- jQery.form.js中文API【整理】
- sublime 常见错误 UnicodeDecodeError: 'gbk' codec can't decode bytes
- 51nod 1080 两个数的平方和
- Cocos2d-x游戏主循环
- 20145324 《Java程序设计》第1周学习总结
- 郝爽-----项目开发经验
- poj3579 双重二分,有意思的一道题,注意二分边界