cxf发布webServices
1、spring配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> <import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> <jaxws:endpoint id="GreetingService" implementor="com.zcz.cxf.service.impl.GreetingServiceImpl" address="/GreetingService"/> </beans>
2、服务器端
1、接口
package com.zcz.cxf.service;
import javax.jws.WebService;
@WebService
public interface GreetingService {
public String greeting(String userName);
public String say(String eat);
//封装Document数据,返回XML字符串
public String XMLInfo() throws Exception;
}
2、实现类
package com.zcz.cxf.service.impl;
import javax.jws.WebService;
import com.zcz.cxf.service.GreetingService;
import com.zcz.cxf.util.OperationXMLByJdom;
import org.jdom.Document;
import org.jdom.Element;
@WebService
public class GreetingServiceImpl implements GreetingService {
public String greeting(String userName) {
return "你好! " + userName;
}
public String say(String eat) {
return "该吃饭了" + eat;
}
//封装Document数据,返回XML字符串
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、将document转换为string
package com.zcz.cxf.util;
import org.jdom.Document;
import java.io.ByteArrayOutputStream;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
/**
* 将document转换为string
* @author Administrator
*
*/
public class OperationXMLByJdom {
/**
* Document转换为字符串
* @param xmlFilePath XML文件路径
* @return xmlStr 字符串
* @throws Exception
*/
public static String doc2String(Document doc) throws Exception {
Format format = Format.getPrettyFormat();
format.setEncoding("UTF-8");// 设置xml文件的字符为UTF-8,解决中文问题
XMLOutputter xmlout = new XMLOutputter(format);
ByteArrayOutputStream bo = new ByteArrayOutputStream();
xmlout.output(doc, bo);
return bo.toString();
}
}
3、客服端
package com.zcz.cxf.client;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import com.zcz.cxf.service.GreetingService;
public class ClientTest{
public static void main(String[] args) {
//创建WebService客户端代理工厂
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
//注册WebService接口
factory.setServiceClass(GreetingService.class);
//设置WebService地址
factory.setAddress("http://localhost:8080/testWebService/cxf/GreetingService");
GreetingService greetingService = (GreetingService)factory.create();
System.out.println("开始调用webservice...");
System.out.println("返回的信息是:"+greetingService.say("米饭"));
try {
System.out.println("返回的信息是:"+greetingService.XMLInfo());
} catch (Exception e) {
}
}
}