1、下载apache-cxf-3.1.4,将jar引入新工程中。

2、People.java

package com.soap.server;

import java.util.Date;

import javax.xml.bind.annotation.XmlRootElement;
/**
* 该类为Web Service中的参数、返回值类型,故需要使用JAXB注解告诉CXF如何在XML和Java Object之间处理,
* 因为,SOAP消息格式包装的是一段XML代码,无论是服务器端,还是客户端,
* 在接收到SOAP消息时,都需要将XML转化为Java Object,
* 在发送SOAP消息时,需要将Java Object转化为XML。
* */
@XmlRootElement(name = "People")
public class People {
private Long id;
private String name;
private Date birthday; public Long getId() {
return id;
} public void setId(Long id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Date getBirthday() {
return birthday;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}

3、PeopleService.java

package com.soap.server;

import java.util.List;
import javax.jws.WebService; @WebService
public interface PeopleService { public String add(People people); public String del(People people); public String modify(People people); public People getOne(Long id); public List<People> getList(String name);
}

4、PeopleServiceImpl.java

package com.soap.server;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.jws.WebService; @WebService(endpointInterface="com.soap.server.PeopleService")
public class PeopleServiceImpl implements PeopleService { @Override
public String add(People people) {
// TODO Auto-generated method stub
System.out.println("ADD:"+people.getId()+","+people.getName()+","+people.getBirthday());
return "ADD SUCCESS";
} @Override
public String del(People people) {
// TODO Auto-generated method stub
System.out.println("DEL:"+people.getId()+","+people.getName());
return "DEL SUCCESS";
} @Override
public String modify(People people) {
// TODO Auto-generated method stub
System.out.println("MODIFY:"+people.getId()+","+people.getName());
return "MODIFY SUCCESS";
} @Override
public People getOne(Long id){
// TODO Auto-generated method stubSystem.out.println("QRY BEGIN");
People people=new People();
people.setId(4L);
people.setName("Name-004");
people.setBirthday(new Date());
return people; }
@Override
public List<People> getList(String name){
// TODO Auto-generated method stub
List<People> list=new ArrayList<People>();
People people0=new People();
People people1=new People();
people0.setId(5L);
people0.setName(name+"-005");
people0.setBirthday(new Date());
people1.setId(6L);
people1.setName(name+"-006");
people1.setBirthday(new Date());
list.add(people0);
list.add(people1);
return list;
}
}

5、web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<servlet>
<servlet-name>SpringCXFServlet</servlet-name>
<servlet-class>com.cxf.servlet.MySpringCXFNonSpringServlet</servlet-class>
<init-param>
<param-name>/peopleService</param-name>
<param-value>com.soap.server.PeopleServiceImpl</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringCXFServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping> <welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>

6、写一个类覆盖org.apache.cxf.transport.servlet.CXFNonSpringServlet的loadBus方法指定BUS

package com.cxf.servlet;

import java.util.Enumeration;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.xml.ws.Endpoint;
import org.apache.cxf.Bus;
import org.apache.cxf.BusFactory;
import org.apache.cxf.transport.servlet.CXFNonSpringServlet; public class MySpringCXFNonSpringServlet extends CXFNonSpringServlet {
private static final long serialVersionUID = 1930791254280865620L; @Override
public void loadBus(ServletConfig servletConfig) {
super.loadBus(servletConfig);
Bus bus = this.getBus();
BusFactory.setDefaultBus(bus);
// 获取在web.xml中配置的要发布的所有的Web服务实现类并发布Web服务
Enumeration<String> enumeration = getInitParameterNames();
while (enumeration.hasMoreElements()) {
String key = enumeration.nextElement();
String value = getInitParameter(key);
try {
Class clazz = Class.forName(value);
try {
Endpoint.publish(key, clazz.newInstance());
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
}

7、部署工程,若Web应用上下文是/SpringCXFService,

则访问http://127.0.0.1:8080/SpringCXFService/services/peopleService?wsdl

  <?xml version="1.0" encoding="UTF-8" ?>
- <wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://server.soap.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" name="PeopleServiceImplService" targetNamespace="http://server.soap.com/">
- <wsdl:types>
- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://server.soap.com/" elementFormDefault="unqualified" targetNamespace="http://server.soap.com/" version="1.0">
<xs:element name="People" type="tns:people" />
<xs:element name="add" type="tns:add" />
<xs:element name="addResponse" type="tns:addResponse" />
<xs:element name="del" type="tns:del" />
<xs:element name="delResponse" type="tns:delResponse" />
<xs:element name="getList" type="tns:getList" />
<xs:element name="getListResponse" type="tns:getListResponse" />
<xs:element name="getOne" type="tns:getOne" />
<xs:element name="getOneResponse" type="tns:getOneResponse" />
<xs:element name="modify" type="tns:modify" />
<xs:element name="modifyResponse" type="tns:modifyResponse" />
- <xs:complexType name="del">
- <xs:sequence>
<xs:element minOccurs="0" name="arg0" type="tns:people" />
</xs:sequence>
</xs:complexType>
- <xs:complexType name="people">
- <xs:sequence>
<xs:element minOccurs="0" name="birthday" type="xs:dateTime" />
<xs:element minOccurs="0" name="id" type="xs:long" />
<xs:element minOccurs="0" name="name" type="xs:string" />
</xs:sequence>
</xs:complexType>
- <xs:complexType name="delResponse">
- <xs:sequence>
<xs:element minOccurs="0" name="return" type="xs:string" />
</xs:sequence>
</xs:complexType>
- <xs:complexType name="add">
- <xs:sequence>
<xs:element minOccurs="0" name="arg0" type="tns:people" />
</xs:sequence>
</xs:complexType>
- <xs:complexType name="addResponse">
- <xs:sequence>
<xs:element minOccurs="0" name="return" type="xs:string" />
</xs:sequence>
</xs:complexType>
- <xs:complexType name="getOne">
- <xs:sequence>
<xs:element minOccurs="0" name="arg0" type="xs:long" />
</xs:sequence>
</xs:complexType>
- <xs:complexType name="getOneResponse">
- <xs:sequence>
<xs:element minOccurs="0" name="return" type="tns:people" />
</xs:sequence>
</xs:complexType>
- <xs:complexType name="getList">
- <xs:sequence>
<xs:element minOccurs="0" name="arg0" type="xs:string" />
</xs:sequence>
</xs:complexType>
- <xs:complexType name="getListResponse">
- <xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="return" type="tns:people" />
</xs:sequence>
</xs:complexType>
- <xs:complexType name="modify">
- <xs:sequence>
<xs:element minOccurs="0" name="arg0" type="tns:people" />
</xs:sequence>
</xs:complexType>
- <xs:complexType name="modifyResponse">
- <xs:sequence>
<xs:element minOccurs="0" name="return" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>
- <wsdl:message name="addResponse">
<wsdl:part element="tns:addResponse" name="parameters" />
</wsdl:message>
- <wsdl:message name="delResponse">
<wsdl:part element="tns:delResponse" name="parameters" />
</wsdl:message>
- <wsdl:message name="getOneResponse">
<wsdl:part element="tns:getOneResponse" name="parameters" />
</wsdl:message>
- <wsdl:message name="getOne">
<wsdl:part element="tns:getOne" name="parameters" />
</wsdl:message>
- <wsdl:message name="del">
<wsdl:part element="tns:del" name="parameters" />
</wsdl:message>
- <wsdl:message name="modifyResponse">
<wsdl:part element="tns:modifyResponse" name="parameters" />
</wsdl:message>
- <wsdl:message name="getListResponse">
<wsdl:part element="tns:getListResponse" name="parameters" />
</wsdl:message>
- <wsdl:message name="getList">
<wsdl:part element="tns:getList" name="parameters" />
</wsdl:message>
- <wsdl:message name="modify">
<wsdl:part element="tns:modify" name="parameters" />
</wsdl:message>
- <wsdl:message name="add">
<wsdl:part element="tns:add" name="parameters" />
</wsdl:message>
- <wsdl:portType name="PeopleService">
- <wsdl:operation name="del">
<wsdl:input message="tns:del" name="del" />
<wsdl:output message="tns:delResponse" name="delResponse" />
</wsdl:operation>
- <wsdl:operation name="add">
<wsdl:input message="tns:add" name="add" />
<wsdl:output message="tns:addResponse" name="addResponse" />
</wsdl:operation>
- <wsdl:operation name="getOne">
<wsdl:input message="tns:getOne" name="getOne" />
<wsdl:output message="tns:getOneResponse" name="getOneResponse" />
</wsdl:operation>
- <wsdl:operation name="getList">
<wsdl:input message="tns:getList" name="getList" />
<wsdl:output message="tns:getListResponse" name="getListResponse" />
</wsdl:operation>
- <wsdl:operation name="modify">
<wsdl:input message="tns:modify" name="modify" />
<wsdl:output message="tns:modifyResponse" name="modifyResponse" />
</wsdl:operation>
</wsdl:portType>
- <wsdl:binding name="PeopleServiceImplServiceSoapBinding" type="tns:PeopleService">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
- <wsdl:operation name="add">
<soap:operation soapAction="" style="document" />
- <wsdl:input name="add">
<soap:body use="literal" />
</wsdl:input>
- <wsdl:output name="addResponse">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="del">
<soap:operation soapAction="" style="document" />
- <wsdl:input name="del">
<soap:body use="literal" />
</wsdl:input>
- <wsdl:output name="delResponse">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="getOne">
<soap:operation soapAction="" style="document" />
- <wsdl:input name="getOne">
<soap:body use="literal" />
</wsdl:input>
- <wsdl:output name="getOneResponse">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="getList">
<soap:operation soapAction="" style="document" />
- <wsdl:input name="getList">
<soap:body use="literal" />
</wsdl:input>
- <wsdl:output name="getListResponse">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="modify">
<soap:operation soapAction="" style="document" />
- <wsdl:input name="modify">
<soap:body use="literal" />
</wsdl:input>
- <wsdl:output name="modifyResponse">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
- <wsdl:service name="PeopleServiceImplService">
- <wsdl:port binding="tns:PeopleServiceImplServiceSoapBinding" name="PeopleServiceImplPort">
<soap:address location="http://127.0.0.1:8080/SpringCXFService/services/peopleService" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

CXF发布在Web服务的更多相关文章

  1. wcf通过webHttpBinding方式发布rest web服务

    <system.serviceModel> <services> <service name="ServiceUpdater.ServiceUpdate&quo ...

  2. Azure机器学习入门(四)模型发布为Web服务

    接Azure机器学习(三)创建Azure机器学习实验,下一步便是真正地将Azure机器学习的预测模型发布为Web服务.要启用Web服务发布任务,首先点击底端导航栏的运行即"Run" ...

  3. Spring MVC中发布Restful Web服务

      对于企业应用来说,数据是许多业务的命脉,软件通常是可替换的,但是多年积累的数据是永远不能替换的.   近些年来,以信息为中心的表述性状态转移(Representational State Tran ...

  4. Eclipse+CXF框架开发Web服务实战

    一. 说明 采用CXF框架开发webservice. 所用软件及版本如下.  操作系统:Window XP SP3.  JDK:JDK1.6.0_07,http://www.oracle.com/ ...

  5. Web服务cxf框架发布2

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本人声明.否则将追究法律责任. 作者:永恒の_☆ 地址:http://blog.csdn.net/chenghui0317/ ...

  6. CXF发布webService服务以及客户端调用

    这篇随笔内容是CXF发布webService服务以及客户端调用的方法 CXF是什么? 开发工作之前需要下载CXF和安装 下载地址:http://cxf.apache.org 安装过程: <1&g ...

  7. 通过CXF方式实现webservice服务

    一.CXF的介绍 Apache CXF 是一个开放源代码框架,提供了用于方便地构建和开发 Web 服务的可靠基础架构.它允许创建高性能和可扩展的服务,您可以将这样的服务部署在 Tomcat 和基于 S ...

  8. SSH集成cxf 发布restful webservice

    首先讲一下什么是restful webservice ,这个问题网上一搜有很多博文去长篇大论的介绍它,但是最后你看完了也会觉得云里雾里的,所以我在这里简单的讲一下我理解的rest webservice ...

  9. 初识Web 服务(即Web Service)

    一.什么是Web服务 简单来说就是在Internet上提供的这种服务,我们称这种服务为Web服务. 二.Web服务的主要目标? 是支持跨平台的可互操作性. 三.Web服务的优势 四.Web服务提供了一 ...

随机推荐

  1. 【java基础 5】树形结构数据加载的思考

    前面两篇文章,分别介绍了使用递归和非递归算法加载树形结构数据的方式,本篇文章,则是自己闲下来的时候,进行的一点小思考. 一.什么地方会用到树形结构 刚开始一看到这种结构的时候,最先是想到了家谱.家谱就 ...

  2. 九度oj 题目1491:求1和2的个数

    题目描述: 给定正整数N,函数F(N)表示小于等于N的自然数中1和2的个数之和,例如:1,2,3,4,5,6,7,8,9,10序列中1和2的个数之和为3,因此F(10)=3.输入N,求F(N)的值,1 ...

  3. BZOJ 3196 二逼平衡树 ——树套树

    [题目分析] 全靠运气,卡空间. xjb试几次就过了. [代码] #include <cmath> #include <cstdio> #include <cstring ...

  4. HDU 1071 The area ——微积分

    [题目分析] 求二次函数和一次函数围成的面积. 先解方程求出一次函数和二次函数. 然后积分. 现在还是不会积分. [代码] #include <cstdio> #include <c ...

  5. cf725F Family Photos

    Alice and Bonnie are sisters, but they don't like each other very much. So when some old family phot ...

  6. 云计算与 OpenStack

    “云计算” 算是近年来最热的词了.现在 IT 行业见面不说这三个字您都不好意思跟人家打招呼. 对于云计算,学术界有各种定义,大家有兴趣可以百度一下. CloudMan 这里主要想从技术的角度谈谈对云计 ...

  7. windows创建任务计划(周期执行bat脚本)

    https://jingyan.baidu.com/article/ca00d56c767cfae99febcf73.html windows找到任务计划程序: 这台电脑->管理

  8. MongoDB_java连接MongoDB

    java程序连接单机版的mongodb: 参考:http://www.runoob.com/mongodb/mongodb-java.html https://www.yiibai.com/mongo ...

  9. JVM GC 相关

    http://blog.csdn.net/cutesource/article/details/5904501 http://www.cnblogs.com/dingyingsi/p/3760447. ...

  10. 初学Android,BroadcastReceiver之发送接收广播

    BroadcastReceiver用于监听系统全局广播消息,由于BroadcastReceiver是一种全局的监听器,因此它可以非常方便地实现系统中不同组件之间通信 启动它需要两步 1.创建需要启动的 ...