前面两篇文章介绍了怎样通过CXF来构建最基本的Web Service,并且其中暴露的接口参数和返回值都是字符串,下面来看看一个稍微复杂一点的例子。
1. 首先是一个普通的pojo对象,用来表示一个实体类
- package com.googlecode.garbagecan.cxfstudy.jaxws;
- import java.util.Date;
- public class Customer {
- private String id;
- private String name;
- private Date birthday;
- public String getId() {
- return id;
- }
- public void setId(String 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;
- }
- @Override
- public String toString() {
- return org.apache.commons.lang.builder.ToStringBuilder.reflectionToString(this);
- }
- }
2. 创建Web Service接口类
- package com.googlecode.garbagecan.cxfstudy.jaxws;
- import javax.jws.WebMethod;
- import javax.jws.WebParam;
- import javax.jws.WebResult;
- import javax.jws.WebService;
- @WebService
- public interface CustomerService {
- @WebMethod
- @WebResult Customer findCustomer(@WebParam String id);
- }
3. 创建Web Service接口的实现类
- package com.googlecode.garbagecan.cxfstudy.jaxws;
- import java.util.Calendar;
- public class CustomerServiceImpl implements CustomerService {
- public Customer findCustomer(String id) {
- Customer customer = new Customer();
- customer.setId("customer_" + id);
- customer.setName("customer_name");
- customer.setBirthday(Calendar.getInstance().getTime());
- return customer;
- }
- }
4. 下面是Server端的代码
- package com.googlecode.garbagecan.cxfstudy.jaxws;
- import javax.xml.ws.Endpoint;
- import org.apache.cxf.interceptor.LoggingInInterceptor;
- import org.apache.cxf.interceptor.LoggingOutInterceptor;
- import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
- public class MyServer {
- private static final String address = "http://localhost:9000/ws/jaxws/customerService";
- public static void main(String[] args) throws Exception {
- // http://localhost:9000/ws/jaxws/customerService?wsdl
- JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();
- factoryBean.getInInterceptors().add(new LoggingInInterceptor());
- factoryBean.getOutInterceptors().add(new LoggingOutInterceptor());
- factoryBean.setServiceClass(CustomerServiceImpl.class);
- factoryBean.setAddress(address);
- factoryBean.create();
- }
- }
5. 下面是Client端的代码
- package com.googlecode.garbagecan.cxfstudy.jaxws;
- import java.net.SocketTimeoutException;
- import javax.xml.ws.WebServiceException;
- import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
- public class MyClient {
- public static void main(String[] args) throws Exception {
- JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();
- factoryBean.setAddress("http://localhost:9000/ws/jaxws/customerService");
- factoryBean.setServiceClass(CustomerService.class);
- Object obj = factoryBean.create();
- CustomerService customerService = (CustomerService) obj;
- try {
- Customer customer = customerService.findCustomer("123");
- System.out.println("Customer: " + customer);
- } catch(Exception e) {
- if (e instanceof WebServiceException
- && e.getCause() instanceof SocketTimeoutException) {
- System.err.println("This is timeout exception.");
- } else {
- e.printStackTrace();
- }
- }
- }
- }
6.测试
首先运行MyServer类,然后运行MyClient类来验证Web Service。
相关推荐
**实战Web Service —— 使用Apache CXF开发Web服务的教程** Apache CXF是一个开源的Java框架,用于构建和部署Web服务。本教程将带你深入理解如何利用CXF来开发高效、灵活的Web服务。我们将从基础概念开始,逐步...
Apache CXF 是一个开源的Java框架,主要用于构建和开发服务导向架构(Service-Oriented Architecture, SOA)和Web服务。本学习笔记旨在提供对Apache CXF的基本理解、功能特性和实际操作指导。 **1. CXF 简介** 1.1...
### 开发Web服务:使用Apache CXF与Axis2(第三版) #### 一、书籍概述 本书《开发Web服务:使用Apache CXF与Axis2》是针对希望学习如何使用Java创建Web服务的专业人士所编写的实用教程。作者Kent Kai Ok Tong以...
【压缩包子文件的文件名称列表】:“cxf实战笔记” 这份压缩包很可能包含了一位开发者在使用CXF开发Web服务过程中的学习笔记,可能包括了以下内容: - **基础教程**:介绍如何搭建CXF环境,创建第一个Web服务。 - *...
- **第三方框架**:如Apache CXF、Apache Axis、XFire等专门针对Web Service的开源框架。 #### 三、Apache CXF框架介绍 - **CXF框架背景**: - CXF最初源自XFire项目,随着XFire的发展停滞,其源码被捐赠给了...
CXF,全称Apache CXF,是一个开源的Java框架,用于构建和部署高质量的WebService。CXF集成了原本独立的XFire和Celtix项目,提供了一种全面的解决方案,支持SOAP、RESTful、JAX-RS和JAX-WS等服务风格。CXF的优势在于...
在Java中,通常使用Apache CXF或JAX-WS框架来生成WSDL文件。 3. **SOAP**: SOAP是一种用于在Web上传输结构化信息的协议,它基于HTTP协议,允许Web服务调用者和提供者之间进行数据交换。SOAP消息通常包含三个部分:...
【CXF开发的服务端及客户端】是一个基于Apache CXF和Spring框架构建的项目,主要功能是实现文件的上传和下载,以及支持视频音频的传输。这个项目为学习者提供了实战经验,帮助理解如何在实际应用中运用CXF作为服务端...
【CXF笔记】这篇笔记主要聚焦于Apache CXF框架,这是一个开源的服务框架,它允许开发者构建和消费Web服务。CXF使得开发人员可以利用多种不同的Web服务标准来创建服务,如SOAP、RESTful API等。CXF支持Java编程模型,...
- **实例化客户端代理**:在Java程序中,创建Web服务的代理对象,这个对象将作为与服务交互的接口。 - **调用服务方法**:通过代理对象调用Web服务的方法,传入参数并接收返回结果。 4. **示例和实践** - PDF...
**三、Apache CXF 2.6.2特性** - **支持JAX-WS 2.2**:这个版本支持最新的JAX-WS规范,提供了更强大的Web服务开发能力。 - **增强的REST支持**:CXF 2.6.2增强了对JAX-RS的支持,可以方便地开发RESTful Web服务。 -...
【标题】"cxf_over_jms_kata:CXF与JMS结合的实战教程" 【描述】"cxf_over_jms_kata是一个基于Apache CXF和Java消息服务(JMS)的示例项目,旨在展示如何在分布式环境中利用CXF框架提供Web服务,并通过JMS进行异步...
XFire是Apache CXF的前身,它是一个用于创建和消费Web服务的框架。XFire提供了XML到Java绑定,使得开发者可以轻松地创建服务接口,并自动生成相应的服务实现。通过XFire,我们可以快速发布一个文件上传服务,这个...
《开发Web服务:使用Apache CXF与Axis 2》(第三版)不仅提供了关于如何使用这两种框架构建Web服务的基础知识,还深入探讨了一些高级话题,如安全性、文件传输以及单元测试等。无论是初学者还是有一定经验的开发者,...
2. **Apache CXF**:Apache CXF是一个开源的Java框架,用于构建和部署Web服务。CXF支持SOAP和RESTful两种Web服务模型,且可以与Spring框架无缝集成,使得服务的创建、配置和管理变得更加简单。 3. **Spring集成**:...
**Apache CXF** 是一个开源的Java框架,用于构建和部署Web服务。CXF允许开发者以Java编程语言来创建服务端和客户端应用程序,支持多种协议,如SOAP、RESTful HTTP、JSON等。它提供了丰富的API和工具,简化了Web服务...
XFire,现已被Apache CXF项目所取代,是一个轻量级的SOAP Web服务框架。它简化了创建和消费Web服务的过程,提供了一种快速开发Web服务的方式。尽管XFire已不再活跃,但这篇文章中提到的技术原理和实践依然适用于现代...
WebService/ApacheCXF RMI/Spring RMI Hession 传统RPC技术在大型分布式架构下面临的问题 分布式架构下的RPC解决方案 Zookeeper 分布式系统的基石 从0开始搭建3个节点额度zookeeper集群 深入分析Zookeeper在...
XFire是Apache CXF项目的前身,它是一个轻量级、高性能的Web服务框架。XFireWebservice是XFire的一个特定应用场景,它专注于简化Java开发者创建Web服务的过程。其核心特点包括: 1. **简单的API**:XFire提供了一套...