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(); } } }
|
--欢迎大家访问我的 个人博客(www.sunkang.com)