您的位置:首页 > 其它

cxf的webservice的xml方式传数据的demo

2016-03-06 11:12 267 查看
1.新建maven项目,再pom中配置需要的jar

<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>

2.webservice服务端

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;
}

}

3.发布webservice

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);
}
}

4.客户端

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();
}
}
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: