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使用EndpointImpl发布WebService加入拦截器
使用cxf 来实现的webservice,包括客户端代码是书写,wsdl文件的导出,和客户端代码的书写,有截图,关键地方有提示,完全是按照我实现时的步骤一步一步来的,和大家分享一下。
以注释的形式详细描述wsdl文件中的内容 type message portType bing service
cxf实现webservice详细文档 cxf调用.net webservice 技术详解
主要介绍了详解Spring boot+CXF开发WebService Demo,非常具有实用价值,需要的朋友可以参考下
主要给大家介绍了关于spring如何集成cxf实现webservice接口功能的相关资料,文中通过示例代码介绍的非常详细,对大家 的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
Google为ndroid平台开发Web Service提供了支持,提供了Ksoap2-android相关架包接下来介绍android调用web service(cxf),感兴趣的朋友可以了解下
主要为大家详细介绍了Spring整合CXF webservice restful的实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
完整的代码详解,让您更快的上手 jar包代码都是测试过的客户端和服务端
Spring Web Services 是基于 Spring 框架的 Web 服务...2) 服务端创建webservice接口 3) 服务端实现webservice接口 4) 服务端配置暴露webservice接口 5) 客户端创建暴露的webservice接口 6) 客户端调用webservice接口
第二篇 Android开发关键组件 第3章 Activity(活动) 3.1 什么是任务 3.2 Activity的生命周期 3.3 基本用法 3.3.1 创建Activity 3.3.2 启动Activity 3.3.3 窗口Activity 3.3.4 Activity生命周期验证 3.4 Activity...
05.WebService核心之WSDL深入详解
09.WebService核心技术之SOAP协议深入详解.
06.WSDL深入详解和WebService调用过程的底层本质
Java作为可扩展的开发平台备受开发者青睐,在其上开发Web服务(以下简称Web Service)的方法犹如雨后春笋般层出不穷,...本文将以图文并茂的方式集中详解使用Axis2和CXF开发Web Service的方法及步骤,以供学习和交流。
本人积累的所有webServer教程,相当全面,...- 爱琴海 - ITeye技术网站.htm XFire部署开发webservice.docx XFire建立Webservice实例.doc XFire开发WebService详解.doc 使用CXF开发WebService.doc cxf.chm 强力推荐。
JAVA如何调用wsdl过程详解java WSDL接口webService实现方式PHP调用wsdl文件类型的接口代码分享解析利用wsdl.exe生成webservice代理类的详解在PHP中利用wsdl创建标准webservice的实现代码Java调用CXF WebService接口...
主要介绍了 Android通过ksoap2传递复杂数据类型详细介绍的相关资料,需要的朋友可以参考下