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 788关于分拆短信的总结 -
生成java安全证书
2013-03-20 10:55 887============================= ... -
eclipse安装svn插件
2013-03-15 14:04 592step1:在“D:\eclipse4.2\dropins” ... -
eclipse插件记录
2012-05-09 11:01 651正则相关:http://www.myregexp.com/ec ... -
DOM与DHTML简介
2012-03-31 11:17 1030DOM与DHTML简介 学 ... -
Tomcat中的Connector配置
2012-03-29 16:07 2799JBoss使用Tomcat作为Web容器,因此在JBoss中对 ... -
进程和线程的联系和区别
2012-03-29 15:57 1140定义: 一、进程是具有一定独立功能的程序关于某个数据集合上的一 ... -
SSL原理
2012-03-28 10:29 729SSL原理 一 前言 首先 ... -
如何把Https网站中的安全证书导入到java中的cacerts证书库?
2012-03-27 17:43 779其实很简单,方法如下: 每一步:进入某个https://ww ... -
tomcat访问中去掉项目名称
2012-03-26 17:05 1011<Context docBase="../wt ... -
tomcat https配置
2012-03-26 17:04 7791、利用keytool工具生成.keystore文件,并且放置 ... -
java中Keytool的使用总结
2012-03-26 15:12 666Keytool 是一个Java 数据证书的管理工具 ,K ... -
再读java思想——初始化与清除
2012-03-22 11:32 6081、为了能用简便、面向对象的语法来编写代码——即“发送消息给对 ... -
再读java思想——一切皆对象
2012-03-21 16:39 7601、数据存储 寄存器(register):这 ... -
再读java思想----一切皆对象
2012-03-20 11:38 9341、在良好的面向对象设计中,每个对象都能很好的完成一项任务,但 ... -
再读java思想----一切皆对象
2012-03-20 11:35 01、在良好的面向对象设计中,每个对象都能很好的完成一项任务,但 ... -
tomcat配置
2012-01-16 16:02 663<Context docBase="E:\pr ... -
apache先骨干项目
2011-12-19 16:05 824分类 项目名 说明 ... -
apache-ftpserver-1.0.6
2011-12-19 14:55 10141、配置文件 ftpd-typical.xml ... -
Java 理论与实践: 线程池与工作队列
2011-11-10 17:15 589https://www.ibm.com/developerwo ...
相关推荐
1. **06_webservice_user_server**: 这是服务器端项目,包含了服务的实现和发布。在这里,开发者会定义服务接口和实现,使用JAX-WS工具生成服务部署描述符(WSDL),并部署到应用服务器上。服务可以通过`@WebService...
JAX-WS RI包含了服务器端和客户端的API,以及工具,如WSDL生成器和SOAP消息处理器。 **服务的创建与发布** 使用JAX-WS,服务可以通过以下步骤创建和发布: 1. **定义服务接口**:使用`@WebService`注解定义一个...
【服务器端实现】 在JAX-WS中,服务端主要通过以下步骤创建: 1. 定义服务接口:首先,我们需要定义一个Java接口,这个接口将作为Web服务的合同。接口中的方法将映射到Web服务的操作。 2. 实现接口:创建接口的...
8. **wsgen** 和 **wsimport**:这两个工具分别用于从Java接口生成Web服务客户端和服务器端代码,以及从WSDL文档生成对应的Java源代码。 9. **其他辅助库**:如log4j、commons-logging等日志处理库,以及其他可能的...
【CXF框架实战:服务器端接口发布与调用】 CXF(CXF XFire与CXF的合并)是一个开源的Java框架,它主要用于构建和开发服务导向架构(SOA)和RESTful应用程序。CXF提供了丰富的功能,包括SOAP、REST、WS-*规范支持...
二、服务器端发布WebServices接口 1. 配置环境:首先确保已安装Java SDK和Maven,然后在项目中引入CXF的相关依赖。在pom.xml文件中添加如下依赖: ```xml <groupId>org.apache.cxf <artifactId>cxf-rt-frontend-...
在本文中,我们将深入探讨Apache CXF框架在创建服务器端Web服务接口中的应用。Apache CXF是一个开源的Java框架,它允许开发者构建和部署SOAP(简单对象访问协议)和RESTful(表述性状态转移)Web服务。CXF以其灵活性...
1. **wsimport工具**:这是一个命令行工具,用于从WSDL(Web服务描述语言)文件生成客户端和服务器端的Java源代码,使得开发人员可以轻松地调用和实现Web服务。 2. **JAXB(Java Architecture for XML Binding)**...
二、创建服务端 1、创建【Web Service Project】,命名为【TheService】。 2、创建【Class】类,命名为【ServiceHello】,位于【com.hyan.service】包下。 3、编写供客户端调用的方法,即...
4. **使用场景**:这些库通常用于企业级Java应用,如服务器端的Web服务开发,以及需要与外部系统交互的应用。JAX-WS和JAXB组合在一起,使得开发人员能以更直观的方式处理Web服务,而无需深入理解底层的XML细节。 5....
1. **客户端配置**: 在客户端,我们需要设置与服务器端相同的WSS4J策略,以进行正确的安全交互。 2. **生成服务代理**: 使用CXF的工具生成服务客户端代理类,或者手动创建并配置。 3. **调用服务**: 通过服务代理...
首先,我们来看`spring与cxf集成配置小实例`的服务器端配置。在`cxf_test_spring_server.zip`中,你将会找到服务器端的相关配置文件和源代码。核心在于创建一个Spring配置文件(如`spring-server.xml`),在这个文件...
5. **CXF_Spring_Server**:这个文件夹可能包含服务器端的应用配置和实现,包括Spring配置文件、服务接口和实现类,以及部署到应用服务器的WAR或EAR文件。 6. **CXF_Spring_Client**:这个文件夹可能包含了客户端的...
"服务器端代码编写说明"涵盖了如何在服务器端创建和部署CXF服务;"客户端代码"则指导如何编写代码来消费这些服务;"包含正常使用所需要的jar文件"指的是实现整合所需的依赖库,这些文件通常包含在Java应用程序中以...
对于RESTful,CXF提供了基于JAX-RS的实现,使得创建REST服务如同编写普通的HTTP服务器端代码一样简单。 6. **Spring集成**:CXF可以与Spring框架无缝集成,通过Spring的IoC容器管理服务实例和依赖关系。在“CXF_...
在实际应用中,我们需要在实现类上配置`@HandlerChain(file="handler-chain.xml")`,并在服务器端获取这些处理器以截取和处理信息。 JAX-WS(Java API for XML Web Services)是Java平台上的一个标准,用于创建和...
2. **WebService**: 这个目录可能包含了服务器端(server)的实现,包括服务接口定义、服务实现类以及相关的配置文件。服务接口定义了对外公开的Web服务方法,服务实现类则是具体的业务逻辑。CXF使用Spring或JAXWS的...
CXF允许开发者以JAX-WS或JAX-RS的方式创建和消费Web服务,提供了丰富的客户端和服务器端API。 集成Spring和CXF可以带来诸多优势,例如: 1. **简化配置**:Spring的IoC(Inversion of Control)容器可以管理CXF...
在服务器端,需要在想发布为 WebService 的类上加上注解 @WebService,这个类的方法就会变为 WebService 的方法了,再通过 Endpoint 的 publish 方法,发布这个服务。最后,在浏览器里输入...
在服务器端,我们需要配置CXF的Servlet,以便处理HTTP请求。这通常在Spring的配置文件中完成,通过`<jaxws:endpoint>`标签来定义服务的实现类、地址以及其他属性。部署后,服务就可以通过HTTP或HTTPS进行访问了。 ...