JAXWS接口如何定义?
接口定义:
@WebService(name = "UserService",targetNamespace = Constants.WS_NAMESPACE) public interface UserWebService { @WebResult(name = "user") public UserDTO getUser(@WebParam(name = "userId") Integer userId) throws FaultException;}
@WebService 必须,(name="UserService")可选,配置Service的名称,默认为类名。targetNamespace可选,默认为http:// package的倒序,可在一个自己的Constants里定义统一的namespace.
默认接口的所有方法均输出为WebService。
@WebResult 可选,配置方法的返回值在WSDL的名称,CXF默认为result。
@WebParam 可选,配置参数在WSDL的名称,CX比较笨F默认为arg0,arg1....
@WebMethod 可选,有一个方法有此注释,则其他无注释的方法非WebService。
接口实现:
@WebService(endpointInterface = "org.springside.examples.miniservice.ws.user.UserWebService",targetNamespace = Constants.WS_NAMESPACE)public class UserWebServiceImpl
@WebService(endpointInterface="") 必须,指定实现的接口。
小结:
接口与实现类都需要@WebService(targetNamespace = Constants.WS_NAMESPACE),接口还需要属性name,实现需要属性endpointInterface。
针对笨笨,不会自动反射参数名的CXF,每个方法的参数都需要重新标注。
三、JAXB2.0入门
@XmlType(name = "User")public class UserDTO {}
JAXB的智能化较高,基本上不需要手工映射。
默认的@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER )根据公共getter/setter与公共属性反射(XmlAccessType.PROPERTY根据getter/setter反射,XmlAccessType.FIELD 根据成员变量反射)
如果有需要注释@XMLElement,@XMLAttribute,需配合XmlAccessorType定义,默认的PUBLIC_MEMBER,需要在getter/setter上定义,如果要写在成员变量上定义,则XmlAccessType改为FIELD。
@XmlType(name = "User") 指定WSDL上的类型名称。
@XmlTransient 可以注释某个字段,取消该字段的反射。
四、直接处理原始XML请求的Provider接口
JAX-WS的API有两个层次,除了常见DataBinding后调用最终Java方法外,还可以使用客户端的Dispatch与服务端Provider接口,绕过DataBinding处理,直接处理XML。
JAX-WS新增的这个功能是为复杂Web服务贴身订造的。被绕过的DataBinding,可以自行调用JAXB2.0的api完成。至于WSDL,可以写死,也可以在一个serverlet里用wsdl4j动态编写。
在Spring配置文件里,将implementor指向你的Provider,指定WSDL,然后编写Provider<T>实现invoke(T)函数。
@WebServiceProvider(portName="stockQuoteReporterPort" serviceName="stockQuoteReporter")@ServiceMode(value="Service.Mode.PAYLOAD")public class stockQuoteReporterProvider implements Provider<DOMSource>public stockQuoteReporterProvider(){ }public DOMSource invoke(DOMSource request){ DOMSource response = new DOMSource(); ... return response; }}
这里ServiceMode有两种模式,PAYLOAD(soap-body)或MESSAGE(完整soap信息)
又见范型,<DOMSource>指明了数据的类型,可选DOM/SAX/StreamSource。也可以是Service.Mode.MESSAGE下的完整SOAPMessage或JMS的DataSource。
最后,需要自行拼装返回的XML结果,记得那些NameSpace不要错。
五,利用Cookie保持session
IE会自行处理cookie,而WebService的客户端,就需要如下代码记录Cookie并在下一次请求时发送。
BindingProvider bp = (BindingProvider)port;bp.getRequestContext().put(BindingProvider.SESSION_MAINTAIN_PROPERTY, true);
CXF和Metro里面都是这么段代码,BindingProvider是JAX-WS中的类
接口定义:
@WebService(name = "UserService",targetNamespace = Constants.WS_NAMESPACE) public interface UserWebService { @WebResult(name = "user") public UserDTO getUser(@WebParam(name = "userId") Integer userId) throws FaultException;}
@WebService 必须,(name="UserService")可选,配置Service的名称,默认为类名。targetNamespace可选,默认为http:// package的倒序,可在一个自己的Constants里定义统一的namespace.
默认接口的所有方法均输出为WebService。
@WebResult 可选,配置方法的返回值在WSDL的名称,CXF默认为result。
@WebParam 可选,配置参数在WSDL的名称,CX比较笨F默认为arg0,arg1....
@WebMethod 可选,有一个方法有此注释,则其他无注释的方法非WebService。
接口实现:
@WebService(endpointInterface = "org.springside.examples.miniservice.ws.user.UserWebService",targetNamespace = Constants.WS_NAMESPACE)public class UserWebServiceImpl
@WebService(endpointInterface="") 必须,指定实现的接口。
小结:
接口与实现类都需要@WebService(targetNamespace = Constants.WS_NAMESPACE),接口还需要属性name,实现需要属性endpointInterface。
针对笨笨,不会自动反射参数名的CXF,每个方法的参数都需要重新标注。
三、JAXB2.0入门
@XmlType(name = "User")public class UserDTO {}
JAXB的智能化较高,基本上不需要手工映射。
默认的@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER )根据公共getter/setter与公共属性反射(XmlAccessType.PROPERTY根据getter/setter反射,XmlAccessType.FIELD 根据成员变量反射)
如果有需要注释@XMLElement,@XMLAttribute,需配合XmlAccessorType定义,默认的PUBLIC_MEMBER,需要在getter/setter上定义,如果要写在成员变量上定义,则XmlAccessType改为FIELD。
@XmlType(name = "User") 指定WSDL上的类型名称。
@XmlTransient 可以注释某个字段,取消该字段的反射。
四、直接处理原始XML请求的Provider接口
JAX-WS的API有两个层次,除了常见DataBinding后调用最终Java方法外,还可以使用客户端的Dispatch与服务端Provider接口,绕过DataBinding处理,直接处理XML。
JAX-WS新增的这个功能是为复杂Web服务贴身订造的。被绕过的DataBinding,可以自行调用JAXB2.0的api完成。至于WSDL,可以写死,也可以在一个serverlet里用wsdl4j动态编写。
在Spring配置文件里,将implementor指向你的Provider,指定WSDL,然后编写Provider<T>实现invoke(T)函数。
@WebServiceProvider(portName="stockQuoteReporterPort" serviceName="stockQuoteReporter")@ServiceMode(value="Service.Mode.PAYLOAD")public class stockQuoteReporterProvider implements Provider<DOMSource>public stockQuoteReporterProvider(){ }public DOMSource invoke(DOMSource request){ DOMSource response = new DOMSource(); ... return response; }}
这里ServiceMode有两种模式,PAYLOAD(soap-body)或MESSAGE(完整soap信息)
又见范型,<DOMSource>指明了数据的类型,可选DOM/SAX/StreamSource。也可以是Service.Mode.MESSAGE下的完整SOAPMessage或JMS的DataSource。
最后,需要自行拼装返回的XML结果,记得那些NameSpace不要错。
五,利用Cookie保持session
IE会自行处理cookie,而WebService的客户端,就需要如下代码记录Cookie并在下一次请求时发送。
BindingProvider bp = (BindingProvider)port;bp.getRequestContext().put(BindingProvider.SESSION_MAINTAIN_PROPERTY, true);
CXF和Metro里面都是这么段代码,BindingProvider是JAX-WS中的类
发表评论
-
关于分拆短信问题
2013-07-08 15:26 706关于分拆短信的总结 -
生成java安全证书
2013-03-20 10:55 845============================= ... -
eclipse安装svn插件
2013-03-15 14:04 559step1:在“D:\eclipse4.2\dropins” ... -
eclipse插件记录
2012-05-09 11:01 592正则相关:http://www.myregexp.com/ec ... -
DOM与DHTML简介
2012-03-31 11:17 998DOM与DHTML简介 学 ... -
Tomcat中的Connector配置
2012-03-29 16:07 2757JBoss使用Tomcat作为Web容器,因此在JBoss中对 ... -
进程和线程的联系和区别
2012-03-29 15:57 1099定义: 一、进程是具有一定独立功能的程序关于某个数据集合上的一 ... -
SSL原理
2012-03-28 10:29 687SSL原理 一 前言 首先 ... -
如何把Https网站中的安全证书导入到java中的cacerts证书库?
2012-03-27 17:43 740其实很简单,方法如下: 每一步:进入某个https://ww ... -
tomcat访问中去掉项目名称
2012-03-26 17:05 977<Context docBase="../wt ... -
tomcat https配置
2012-03-26 17:04 7381、利用keytool工具生成.keystore文件,并且放置 ... -
java中Keytool的使用总结
2012-03-26 15:12 637Keytool 是一个Java 数据证书的管理工具 ,K ... -
再读java思想——初始化与清除
2012-03-22 11:32 5851、为了能用简便、面向对象的语法来编写代码——即“发送消息给对 ... -
再读java思想——一切皆对象
2012-03-21 16:39 7261、数据存储 寄存器(register):这 ... -
再读java思想----一切皆对象
2012-03-20 11:38 8971、在良好的面向对象设计中,每个对象都能很好的完成一项任务,但 ... -
再读java思想----一切皆对象
2012-03-20 11:35 01、在良好的面向对象设计中,每个对象都能很好的完成一项任务,但 ... -
tomcat配置
2012-01-16 16:02 593<Context docBase="E:\pr ... -
apache先骨干项目
2011-12-19 16:05 778分类 项目名 说明 ... -
apache-ftpserver-1.0.6
2011-12-19 14:55 9741、配置文件 ftpd-typical.xml ... -
Java 理论与实践: 线程池与工作队列
2011-11-10 17:15 533https://www.ibm.com/developerwo ...
相关推荐
只对初学web service 使用jaxws框架的一个小实例
基于jaxws-webservice的客户端和服务器
jaxws-rt-2.3.3
jaxws入门经典,含有循序渐进的例子,非常详细,看完后就会用jaxws接口开发webservice
jaxws-api
JAXWS官网上下下来的开发java webservice用的jar文件,在cmd下输入java -jar JAXWS2.1.2-20070917.jar即可使用
jaxws-ri-2.3.0 官方jar包
最全jaxws包,java webservice开放专用
JAXWS2.2 jar jaxws2.2 jar JAXWS2.2.3-20110209.zip
Jaxws+Spring整合Demo完整源码
jaxws的api说明文档,内涵jaxws全部的的类和说明
JAXWS2.2-20091203.zip
jaxws需要jar包
第一天: 什么是webservice? 从案例(便民查询网站)分析如何实现? 使用socket实现。 使用jaxws开发webservice。 Webservice三要素 ... CXF发布rest的webservice。(重点) 综合案例: 实现便民查询网站
jaxws-api-2.1.jar包免费下载,方便大家
jaxws-ri-2.28的jar包; jaxws-ri-2.28最新版本的;
还在为找不到jar文件烦心吗,不用了到我空间来有你想要的,持续更新。。。 jaxws-api.jar
jaxws-2_1规范 是英文的,英语不好的请注意哈
赠送jar包:cxf-rt-frontend-jaxws-3.0.1.jar; 赠送原API文档:cxf-rt-frontend-jaxws-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-frontend-jaxws-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-frontend-jaxws...
geronimo-jaxws_2.2_spec-1.1.jar