本文链接:http://blog.csdn.net/kongxx/article/details/7527094
Apache CXF实战之一 Hello World Web Service
Apache CXF实战之二 集成Sping与Web容器
前面两篇文章介绍了怎样通过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的优势在于...
【CXF笔记】这篇笔记主要聚焦于Apache CXF框架,这是一个开源的服务框架,它允许开发者构建和消费Web服务。CXF使得开发人员可以利用多种不同的Web服务标准来创建服务,如SOAP、RESTful API等。CXF支持Java编程模型,...
**三、Apache CXF 2.6.2特性** - **支持JAX-WS 2.2**:这个版本支持最新的JAX-WS规范,提供了更强大的Web服务开发能力。 - **增强的REST支持**:CXF 2.6.2增强了对JAX-RS的支持,可以方便地开发RESTful Web服务。 -...
【CXF开发的服务端及客户端】是一个基于Apache CXF和Spring框架构建的项目,主要功能是实现文件的上传和下载,以及支持视频音频的传输。这个项目为学习者提供了实战经验,帮助理解如何在实际应用中运用CXF作为服务端...
在Java中,通常使用Apache CXF或JAX-WS框架来生成WSDL文件。 3. **SOAP**: SOAP是一种用于在Web上传输结构化信息的协议,它基于HTTP协议,允许Web服务调用者和提供者之间进行数据交换。SOAP消息通常包含三个部分:...
《开发Web服务:使用Apache CXF与Axis 2》(第三版)不仅提供了关于如何使用这两种框架构建Web服务的基础知识,还深入探讨了一些高级话题,如安全性、文件传输以及单元测试等。无论是初学者还是有一定经验的开发者,...
WebService/ApacheCXF RMI/Spring RMI Hession 传统RPC技术在大型分布式架构下面临的问题 分布式架构下的RPC解决方案 Zookeeper 分布式系统的基石 从0开始搭建3个节点额度zookeeper集群 深入分析Zookeeper在...
【描述】"cxf_over_jms_kata是一个基于Apache CXF和Java消息服务(JMS)的示例项目,旨在展示如何在分布式环境中利用CXF框架提供Web服务,并通过JMS进行异步通信。该项目的核心在于理解CXF如何与消息中间件集成,以...
- **实例化客户端代理**:在Java程序中,创建Web服务的代理对象,这个对象将作为与服务交互的接口。 - **调用服务方法**:通过代理对象调用Web服务的方法,传入参数并接收返回结果。 4. **示例和实践** - PDF...
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已不再活跃,但这篇文章中提到的技术原理和实践依然适用于现代...
工具方面,可能介绍了Apache CXF、Glassfish Metro等Java Web服务框架,它们简化了服务的开发、部署和测试过程。开发者可以利用这些工具自动生成服务端代码、客户端代理,甚至WSDL文件。 在学习过程中,你还会了解...
XFire是Apache CXF的前身,它是一个用于创建和消费Web服务的框架。XFire提供了XML到Java绑定,使得开发者可以轻松地创建服务接口,并自动生成相应的服务实现。通过XFire,我们可以快速发布一个文件上传服务,这个...