本文来自:http://clq9761.iteye.com/blog/1765707
一、概述 1、ApacheCXF项目是由ObjectWeb Celtix和CodeHaus XFire合并成立。ObjectWeb Celtix是 由IONA公司赞助,于2005年成立的开源Java ESB产品,XFire则是业界知名的SOAP堆栈。 合并后的ApacheCXF融合该两个开源项目的功能精华,提供了实现SOA所需要的核心ESB功能框架, 包括SOA服务创建,服务路由,及一系列企业级QoS功能。
2.支持标准? (1)JAX-WS,JSR-181,SAAJ,JAX-RS? (2)SOAP 1.1,1.2,WS-I BasicProfile,WS-Security,WS-Addressing,WS-RM,WS-Policy? (3)WSDL 1.1? (4)MTOM
3.传输方式,绑定,数据绑定,传送数据格式? (1)绑定: SOAP,REST/HTTP? (2)数据绑定: JAXB 2.x,Aegis,XMLBeans,SDO? (3)传送数据格式: XML,JSON,FastInfoset? (4)传输方式: HTTP,Servlet,JMS
?
二、基于SOAP发布webservice
(1)pom.xml文件中导入CXF相关包
- <dependency>??
- ????groupId>org.apache.cxf</artifactId>cxf-rt-coreversion>2.6.2>??????????????????
- >cxf-rt-frontend-jaxws>cxf-rt-transports-http>??
(2)web.xml文件中配置
servlet servlet-name>CXFServlet >???????
servlet-class>org.apache.cxf.transport.servlet.CXFServletservlet-mappingurl-pattern>/cxf/* (3)创建webService接口UserService
package?com.icsshs.dmis.webservice.soap;??
- import?javax.jws.WebParam;??
- import?javax.jws.WebService;??
- import?com.icsshs.dmis.webservice.soap.response.UserDTO;??
- ?
- *?JAX-WS2.0的WebService接口定义类?*??
- *?使用JAX-WS2.0?annotation设置WSDL中的定义.?
- *?使用WSResult及其子类包裹返回结果.?
- *?使用DTO传输对象隔绝系统内部领域对象的修改对外系统的影响.?
- *??
- */??
- //name?指明wsdl中<wsdl:portType>元素的名称??
- @WebService(name?=?"UserService",?targetNamespace?=?WsConstants.NS)??
- public?interface?UserService?{??
- ??
- ??????
- //如果没有@WebParam的描述,在wsdl文件内描述的方法中,参数名将变为arg0,arg1…以此类推.??
- ????public?String?getUserName(@WebParam(name?=?"userId")String?userId);??
- public?UserDTO?getUser( }??
UserService接口实现类:
*?WebService服务端实现类.?
//serviceName指明WSDL中<wsdl:service>与<wsdl:binding>元素的名称,??
//endpointInterface属性指向Interface类全称.??
@WebService(serviceName?=?"UserService",???
????????endpointInterface?=?"com.icsshs.dmis.webservice.soap.UserService",??
targetNamespace?=?WsConstants.NS)??
class?UserServiceImpl?implements?UserService?{??
????@Override??
public?UserDTO?getUser(String?userId)?{??
????????UserDTO?dto?=?new?UserDTO();??
????????dto.setId(Long.parseLong("1001"));??
????????dto.setLoginName("dongwq");??
????????dto.setName("张三");??
????????dto.setEmail("dongwq@qq.com");??
????????return?dto;??
????}??
public?String?getUserName(String?userId)?{??
return?"dongwq";??
传输的对象UserDTO类:
|