云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > Apache CXF入门及与Spring整合快速上手实例详解

Apache CXF入门及与Spring整合快速上手实例详解

  • 62 次阅读
  • 3 次下载
  • 2025/5/24 7:04:04

基础架构

CXF旨在为服务创建必要的基础设施,它的整体架构主要由以下几个部分组成: 1.Bus

它是C X F架构的主干,为共享资源提供了一个可配置的场所,作用非常类似于S p r i n g的ApplicationContext。这些共享资源包括WSDL管理器、绑定工厂等。通过对Bus进行扩展,可以方便地容纳自己的资源,或替换现有 的资源。默认Bus实现是基于Spring的,通过依赖注入,将运行时组件串起来。Bus的创建由BusFactory负责,默认是 SpringBusFactory,对应于默认Bus实现。在构造过程中,SpringBusFactory会搜索META-INF/cxf(就包含在 CXF的Jar中)下的所有Bean配置文件,根据它们构建一个ApplicationContext。开发者也可提供自己的配置文件来定制Bus。 2.消息传递和拦截器(Interceptor)

CXF建立于一个通用的消息层之上,主要由消息、拦截器和拦截器链

(InterceptorChain)组成。CXF是以消息处理为中心 的,熟悉 JSP/Servlet的开发者可以将拦截器视为CXF架构中的“Filter”,拦截器链也与

“FilterChain”类似。通过拦截器,开发者可以 方便地在消息传递、处理的整个过程中对CXF进行扩展。拦截器的方法主要有两个:handleMessage和handleFault,分别对应消息处理 和错误处理。在开发拦截器的时候需要注意两点:

拦截器不是线程安全的,不建议在拦截器中定义实例变量并使用它。这一点跟JSP/Servlet中对于Filter的处理是一样的;

不要调用下一个拦截器的handleMessage或handleFault,这个工作由InterceptorChain来完成。 3.前端(Front End)

它为CXF提供了创建服务的编程模型,当前主要的前端就是JAX-WS。 4.服务模型

CXF中的服务通过服务模型来表示。它主要有两部分:ServiceInfo和服务本身。ServiceInfo作用类似WSDL,包含接 口信息、绑定、端点(EndPoint)等信息;服务则包含了ServiceInfo、数据绑定、拦截器和服务属性等信息。可使用Java类和WSDL来 创建服务。一般是由前端负责服务的创建,它通过ServiceFactory来完成。

5.绑定(Binding)

绑定提供了在传输之上映射具体格式和协议的方法,主要的两个类是Binding和BindingFactory。BindingFactory负责 创建Binding。 6.传输(Transport)

为了向绑定和前端屏蔽传输细节,CXF提供了自己的传输抽象。其中主要有两个对象:Conduit和Destination。前者是消息发 送的基础,后者则对应消息接收。开发者还可以给Conduit和Destination注册MessageObserver,以便在消息发送和接收时获得 通知。 开发方法

CXF 可以创建的Web 服务应用有两种:服务提供者和服务消费者。这种结构可类比客户端/ 服务器结构,服务消费者类似于客户端,服务提供者类似于服务器。使用CXF 创建应用时,服务提供者和服务消费者并不需要同时出现,因为有可能应用只是作为服务提供者或服务消费者单独出现。

为了说明使用CXF 如何创建这两种类型的应用,本教程将同时给出它们的例子。另外,由于Groovy在Java 世界中变得越来越流行,本教程会给出使用Groovy 的CXF 插件GroovyWS 的实现例子。例子使用JDK 1.5.X 和Groovy 1.0 完成,包含以下几部分:

1.User,用户对象,在消费者和提供者之间传递;

2.UserService,用户管理服务,它提供增加和获取所有用户的功能; 3.Client,服务消费者,它向UserService发起服务请求。 Java 实现的步骤包括以下几点。

服务端包含UserService、UserServiceImpl和User。其中,UserService是接口定 义,UserServiceImpl是它的实现,并负责服务的发布,服务只有发布之后才能被消费。例子使用了JAX-WS,它们的主要内容如下: UserService

package server; import javax.jws.WebService; @WebService public interface UserService { void add(User user); User[] findAllUsers(); } @WebService 指明接口是Web 服务 UserServiceImpl

import java.util.List; import java.util.Vector; import javax.jws.WebService; import javax.xml.ws.Endpoint; @WebService(endpointInterface = \serviceName = \portName=\public class UserServiceImpl implements UserService { static List UserRepository= new Vector(); public void add(User user) { UserRepository.add(user); } public User[] findAllUsers() { User[] users= new User[UserRepository.size()]; UserRepository.toArray(users); return users; } public static void main(String[] args){ UserServiceImpl userService= new UserServiceImpl(); Endpoint.publish(\http://localhost:9000/userService \} } @ WebService中的serviceName、portName,分别指定了其产生的WSDL中的服务名和端口名。 endpointInterface为接口的类名。服务发布代码也可以放在另一个类中。 User

package server; public class User { String first; String last; public String getFirst() { return first; } public void setFirst(String first) { this.first = first; } public String getLast() { return last; } public void setLast(String last) { this.last = last; } } 2.客户端只有一个类:Client,其他的User、UserService引用server包中的对象。

package client; import javax.xml.namespace.QName; import javax.xml.ws.Service; import javax.xml.ws.soap.SOAPBinding; import server.User; import server.UserService; public class Client { public static void main(String[] arg){ Service service = Service.create( new QName(\http://server/ \service.addPort(new QName(\http://server/ \, SOAPBinding.SOAP11HTTP_BINDING , \http://localhost:9000/userService \UserService userService= service.getPort(UserService.class); User user= new User(); user.setFirst(%user.setLast(%userService.add(user); User[] users= userService.findAllUsers(); for(User u : users){ System.out.println(u.getFirst()+\} } }

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

基础架构 CXF旨在为服务创建必要的基础设施,它的整体架构主要由以下几个部分组成: 1.Bus 它是C X F架构的主干,为共享资源提供了一个可配置的场所,作用非常类似于S p r i n g的ApplicationContext。这些共享资源包括WSDL管理器、绑定工厂等。通过对Bus进行扩展,可以方便地容纳自己的资源,或替换现有 的资源。默认Bus实现是基于Spring的,通过依赖注入,将运行时组件串起来。Bus的创建由BusFactory负责,默认是 SpringBusFactory,对应于默认Bus实现。在构造过程中,SpringBusFactory会搜索META-INF/cxf(就包含在 CXF的Jar中)下的所有Bean配置文件,根据它们构建一个ApplicationContext。开发者也可提供自己的配置文件来定制Bus。 2.消息传

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com