CXF之JAX-WS
JAX-WS规范是一组XML web services的JAVA API。JAX-WS允许开发者可以选择RPC-oriented或者message-oriented 来实现自己的web services。在 JAX-WS中,一个远程调用可以转换为一个基于XML的协议例如SOAP。在使用JAX-WS过程中,开发者不需要编写任何生成和处理SOAP消息的代码。JAX-WS的运行时实现会将这些API的调用转换成为对于SOAP消息。
在服务器端,用户只需要通过Java语言定义远程调用所需要实现的接口SEI (service endpoint interface),并提供相关的实现,通过调用JAX-WS的服务发布接口就可以将其发布为WebService接口。
在客户端,用户可以通过JAX-WS的API创建一个代理(用本地对象来替代远程的服务)来实现对于远程服务器端的调用。
通过web service所提供的互操作环境,我们可以用JAX-WS轻松实现JAVA平台与其他编程环境(.net等)的互操作。
JAX-WS annotation
主要常用接口:
@WebService,必选的标注。用于导出的服务接口及其实现类
name
|
定义导出的服务接口的名字,对应于WSDL文档中wsdl:portType。默认是服务接口的Java类名加PortType
|
targetNamespace
|
定义导出的服务接口的名域(namespace),默认是倒置的服务接口Java包名。如demo.cxf.UserService的名域将会是http://cxf.demo/
|
serviceName
|
定义服务名,与名域一起唯一标识一个服务。默认是其Java类名
|
wsdlLocation
|
其WSDL文档URL。可由服务器容器自动产生
|
endpointInterface
|
指定服务接口的Java类。通常用于服务实现类的标注。应当指定类的全名,如demo.cxf.UserService
|
portName
|
对应WSDL文档中的wsdl:port元素。默认是Java类名加Port
|
@WebMethod,可选的标注,用于服务接口的方法
operationName
|
指定方法在WSDL文档中的名字,客房端用此名字调用方法
|
action
|
Specifies the value of the soapAction attribute of the soap:operation element generated for the method. The default value is an empty string.
|
exclude
|
生成WSDL文档时将该方法排除在外
|
@SOAPBinding,可选的标注,用于指定生成的SOAP定义文档风格。关于此标注再详细的信息请查阅SOAP标准等参考资料
style
|
Style.DOCUMENT (默认)
Style.RPC
|
SOAP消息风格
|
use
|
Use.LITERAL (默认)
Use.ENCODED
|
SOAP数据编码方式
|
parameterStyle
|
ParameterStyle.BARE
ParameterStyle.WRAPPED (默认)
|
Specifies how the method parameters, which correspond to message parts in a WSDL contract, are placed into the SOAP message body. A parameter style of BARE means that each parameter is placed into the message body as a child element of the message root. A parameter style of WRAPPED means that all of the input parameters are wrapped into a single element on a request message and that all of the output parameters are wrapped into a single element in the response message. If you set the style to RPC you must use the WRAPPED parameter style.
|
@RequestWrapper,可选的标注,用于指定如何包装客户端调用服务方法使用的参数
@ResponseWrapper,可选的标注,用于指定如何包装客户端调用服务方法的返回值
@WebFault,可选的标注,用于注解服务接口方法抛出的异常
name
|
异常的名字
|
targetNamespace
|
对应的名域,默认是服务接口的名域
|
faultName
|
实现该异类的类名
|
@WebParam,可选的标注,用于指定方法参数的使用方式
name
|
在WSDL文档中的名字,默认是arg0,arg1…
|
targetNamespace
|
对应的名域。默认是服务接口的名域
|
mode
|
Mode.IN (默认)、Mode.OUT、Mode.INOUT
对于Java程序没有意义
|
header
|
true或者false(默认),指定该参数是否在SOAP消息头部发送
|
partName
|
Specifies the value of the name attribute of the wsdl:part element for the parameter when the binding is document.
|
@WebResult,可选的标注,用于指定返回值的使用方式
name
|
返回值在WSDL文件中的名字。默认是return
|
targetNamespace
|
对应的名域。默认是服务接口的名域
|
header
|
true或者false(默认),指定该参数是否在SOAP消息头部发送
|
partName
|
Specifies the value of the name attribute of the wsdl:part element for the parameter when the binding is document.
|
具体请参考j2EE API是如下两个包:
² javax.jws
² javax.jws.soap
JAX-WS Dispatch API
客户端开发者可以使用JAX‐WS 规范中定义的javax.xml.ws.Dispatch API。这是一个低层API,它要求客户端将消息或消息的有效负载(payload)构造成XML,并且要求精通期望的信息或负载的结构。这在客户端希望操作XML 消息层时非常有用。
可以通过调用Service 接口的任何一个createDispatch(...) 方法来获得javax.xml.ws.Dispatch 的实例。
1、Dispatch对象有两个使用模型:
l 消息模型
l 负载模型
ü 消息模型
在消息模型中,一个Dispatch对象要使用一个完整的消息。完整的消息包括头与包装器。
为Despatch对象指定使用消息模型,当创建Dispatch对象时,要提供java.xml.Service.Mode.MESSAGE值。
ü 负载模型
在负载模型中,Dispatch对象仅使用消息负载(消息体body)。
为Despatch对象指定使用负载模型,当创建Dispatch对象时,要提供java.xml.ws.Service.Mode.PAYLOAD值.
2 、Data Types(数据类型)
Dispatch对象,因为它们是低级别的对象,使用相同的JAXB生成的高级别的消费者API是不被优化的。
Dispatch对象使用下面几个类型:
l `
l javax.activation.DataSource
l JAXB
3、参考:
² http://blog.csdn.net/fhd001/archive/2010/08/01/5780840.aspx
² http://man.lupaworld.com/content/develop/JDK_6.0_API_html_zh_CN/html/zh_CN/api/javax/xml/ws/class-use/Dispatch.html
分享到:
相关推荐
**二、CXF与WebService的关系** CXF是开发WebService的首选工具之一,因为它提供了一种直观的方式将Java类映射为Web服务接口,反之亦然。通过CXF,开发者可以轻松地创建基于JAX-WS(Java API for XML Web Services)...
CXF与Axis2框架区别详解 CXF和Axis2是两个流行的Webservice框架,都是由现有的项目逐渐演化而来的。Axis2是由Axis1.x系列演化而来,而Apache CXF则是由Celtix和XFire项目整合而生。在本文中,我们将探讨CXF和Axis2...
【标题】:“使用CXF:Java 2 WSDL” 【描述】:在Java开发中,Apache CXF是一个广泛使用的开源框架,它允许开发者构建和部署Web服务。"Java 2 WSDL"指的是从Java类生成WSDL(Web Services Description Language)...
**Apache CXF详解** Apache CXF是一个开源的Web服务框架,它将原本复杂的Web服务开发流程简化,提供了丰富的API和工具,让开发者能够快速构建出高性能、高质量的Web服务。其主要特点包括: 1. **支持多种协议**:...
**WebService CXF 详解** **一、WebService简介** WebService是一种基于标准的,可以在不同操作系统、编程语言之间交换数据的Web应用程序。它通过WSDL(Web服务描述语言)定义了服务接口,利用SOAP(简单对象访问...
### Apache CXF wsdl2java 工具使用详解 #### 一、Apache CXF 概述 Apache CXF 是一个高性能、轻量级的开源框架,用于构建和使用基于 SOAP 和 REST 规范的 Web 服务。CXF 提供了强大的功能支持,包括 XML 数据的...
【WebService CXF详解与入门】 WebService是一种允许不同系统之间进行通信和交互的标准协议,它基于HTTP协议,使得应用程序可以无视具体实现细节地调用互联网上的服务。这种技术使得分布式应用程序的发展成为可能,...
Apache CXF 和 Spring 整合详解 在 Java 开发领域,Apache CXF 是一个流行的开源框架,用于构建和开发服务导向架构(SOA)的应用程序。它提供了多种方式来实现 Web 服务,包括 JAX-WS 和 JAX-RS。另一方面,Spring ...
**Spring整合CXF详解** Spring框架与Apache CXF的整合是企业级Java应用中常见的实践,主要用于构建基于SOAP和RESTful服务。这个"Spring整合CXF demo"项目提供了一个直观的例子,帮助开发者理解如何在Spring环境中...
【CXF技术详解】 CXF,全称CXF Commons eXtensible Services Framework,是一个开源的Java服务框架,主要用于构建和开发服务导向架构(SOA)中的Web服务。CXF支持多种Web服务标准,包括WS-*(如SOAP、WSDL、WS-...
2. **Logging Message**:CXF内部提供了一个`LoggingMessage`类来方便地记录消息的详细信息,包括消息ID、编码方式、内容类型等。 #### 三、代码实现详解 ##### 1. 创建自定义拦截器`InInterceptor` ```java ...
2. 实例化EndpointImpl:在服务发布时,实例化`EndpointImpl`对象,传入服务接口和服务实现。例如: ```java EndpointImpl endpoint = new EndpointImpl(bus, myWebServiceInterface, myWebServiceImpl); ``` 3....
### CXF生成的WSDL详解 #### 一、概述 WSDL(Web Services Description Language)是一种用于描述Web服务的标准XML格式。它包含了服务提供者如何访问该服务的信息,包括服务的位置、服务可用的方法以及这些方法...
【Java编写的CXF实例详解】 Java编程语言在企业级应用开发中占据着重要的地位,尤其是在Web服务领域。CXF,全称为CXF框架(Apache CXF),是一个强大的开源Java框架,用于构建和消费Web服务。它允许开发者通过Java ...
**JDK21集成CXF详解** 在Java开发中,CXF是一个广泛使用的开源框架,主要用于构建和开发服务导向架构(SOA)的应用程序。它提供了SOAP和RESTful Web服务的支持,同时也支持WS-*规范。CXF允许开发者利用Java语言的...
2. 配置CXF服务:创建服务接口和服务实现,使用JAX-WS注解来定义服务。 3. 配置Spring:在Spring配置文件中声明CXF服务,包括端点地址、服务类等信息。 4. 启动服务:通过Spring启动CXF服务,使其对外提供服务。 ...
【CXF与Spring整合Web服务详解】 在Java世界中,Apache CXF是一个广泛使用的开源框架,用于构建和部署Web服务。它提供了丰富的功能,包括SOAP、RESTful API的支持,以及与Spring框架的深度集成。本篇文章将深入探讨...
**WebService CXF 对象传递详解** 在Web服务领域,CXF是一个非常重要的开源框架,它允许开发者创建和消费各种Web服务。CXF支持SOAP、RESTful等多种通信模式,并且能够处理复杂的对象传递,使得Web服务的数据交换...
2. **CXF的架构**:CXF主要由几个核心组件组成,包括Bus(总线)、Endpoint(端点)、Service(服务)和Data Binding(数据绑定)。Bus作为核心,管理其他组件,Endpoint定义服务的暴露方式,Service是业务逻辑的...