随笔分类 - WebService
在cxf中使用配置避免增加字段导致客户端必须更新、同步实体属性的问题
摘要: 在使用cxf实现webservice时,经常碰到的问题就是如果在服务端,修改了一个接口的签名实现,如增加一个字段,或者删除一个字段。在这种情况下,在默认的配置中,就会报以下的错误信息: org.apache.cxf.interceptor.Fault: Unmarshalling Error: unexpected element . Expected elements are 这种错误...
阅读全文
Spring整合CXF,发布RSETful 风格WebService
摘要: 这篇文章是承接之前CXF整合Spring的这个项目示例的延伸,所以有很大一部分都是一样的。关于发布CXF WebServer和Spring整合CXF这里就不再多加赘述了。如果你对Spring整合CXF WebService不了解,具体你可以参看这两篇文章: http://www.cnblogs.com/hoojo/archive/2011/03/30/1999563.html http://ww...
阅读全文
Spring 3 整合Apache CXF WebService
摘要: 在CXF2版本中,整合Spring3发布CXF WebService就更加简单了。因为Spring 3提供了annotation注解,而CXF2发布WebService已经不像之前版本的配置那样(参考老版本发布WebService系列文章:http://www.cnblogs.com/hoojo/archive/2011/03/30/1999563.html),现在发布一个WebService可以...
阅读全文
Spring REST
摘要: 前面介绍过Spring的MVC结合不同的view显示不同的数据,如:结合json的view显示json、结合xml的view显示xml文档。那么这些数据除了在WebBrowser中用JavaScript来调用以外,还可以用远程服务器的Java程序、C#程序来调用。也就是说现在的程序不仅在BS中能调用,在CS中同样也能调用,不过你需要借助RestTemplate这个类来完成。RestTemplate...
阅读全文
CXF WebService 开发文档-目录索引
摘要: 上次介绍了Axis的WebService,现在我们来看看CXF是怎么完成WebService的。 Axis1 WebService 在线博文: http://www.cnblogs.com/hoojo/archive/2010/12/20/1911349.html Axis2 WebService 在线博文: http://www.cnblogs.com/hoojo/archive/2011/03/16/1985160.html百度文库:http://wenku.baidu.com/view/f7f8211e59eef8c75fbfb398.html索引一、CXF WebService准备工作
阅读全文
四、CXF WebService中传递复杂类型对象
摘要: 前面介绍的都是传递简单的字符串,现在开始介绍传递复杂类型的对象。如JavaBean、Array、List、Map等。 1、 首先看看服务器端的代码所需要的JavaBean对象 package com.hoo.entity;import java.io.Serializable;/** * <b>function:</b>User Entity * @author hoojo * @createDa...
阅读全文
五、CXF WebService整合Spring
摘要: 首先,CXF和spring整合需要准备如下jar包文件: 这边我是用Spring的jar包是Spring官方提供的,并没有使用CXF中的Spring的jar文件。 添加这么多文件后,首先在web.xml中添加如下配置: <!-- 加载Spring容器配置 --><listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 设置Spring容器加载配置文件路径 --&g
阅读全文
三、CXF对Interceptor拦截器的支持
摘要: 前面在Axis中介绍过Axis的Handler,这里CXF的Interceptor就和Handler的功能类似。在每个请求响应之前或响应之后,做一些事情。这里的Interceptor就和Filter、Struts的Interceptor很类似,提供它的主要作用就是为了很好的降低代码的耦合性,提供代码的内聚性。下面我们就看看CXF的Interceptor是怎么样工作的。 1、 我们就用上面的HelloWorldService,客户端的调用代码重新写一份,代码如下: package com.hoo.client;import org.apache.cxf.interceptor.LoggingIn
阅读全文
二、CXF 入门示例
摘要: 又一HelloWorld示例,老套的HelloWorld是入门经典。也是基础和必须掌握的,下面看看HelloWorldWebService,很简单。 需要的jar包如下: 1、 HelloWorldService服务器端代码 package com.hoo.service;import javax.jws.WebParam;import javax.jws.WebService;import javax.jws.soap.SOAPBinding;import javax.jws.soap.SOAPBinding.Style;/** * <b>function:</b>C
阅读全文
一、CXF WebService准备工作
摘要: 1、 CXF官方网址:http://cxf.apache.org/ 2、 Jar包下载地址:http://www.apache.org/dyn/closer.cgi?path=/cxf/2.3.3/apache-cxf-2.3.3.zip 将下来的jar包解压后,目录大概就这样 bin目录提供的是常用的dos控制台命令工具 docs 帮助文档 lib jar包、依赖库 lib-samples 也是...
阅读全文
五、WebService会话Session的管理
摘要: 1、新建Session的WebService测试代码,代码很简单。就是记录用户登录的状态信息,放在MessageContext的ServiceContext中。代码如下:代码package com.hoo.service;import org.apache.axis2.context.MessageContext;import org.apache.axis2.context.ServiceContext;/** * <b>function:</b>WebService Session会话消息 * @author hoojo * @createDate 2011-3-8
阅读全文
Axis2.x WebService开发指南-目录索引
摘要: Axis的简单准备 Axis的入门实例 Axis复杂对象类型的WebService Axis的辅助工具发布、调用WebService Axis WebService会话Session的管理 Axis用控制台Dos命令发布WebService Axis跨多个WebService管理Session Axis用Spring的JavaBean发布WebService Axis异步调用WebService Axis 的Module模块 Axis使用SoapMonitor监视WebService的请求和响应信息百度文库:http://wenku.baidu.com/view/12501ed7195f312
阅读全文
十、 使用SoapMonitor监视WebService的请求和响应信息
摘要: 使用soapMonitor可以监视到请求和响应的WebService的基本信息,可以讲响应在控制台的信息显示在applet控件上。 步骤如下: 1、 部署相关的applet和servlet Axis2有自带的monitor模块,这里就不需要单独安装。在[tomcat_home]\webapps\axis2\WEB-INF\lib目录中,找到axis2-soapmonitor-servlet-1.5...
阅读全文
九、 编写Module模块
摘要: Axis可以通过Module模块进行扩展,用户可以编写定制自己的Module模块。编写一个Module的模块至少需要实现两个接口,分别是Handler和Module接口。开发axis2的Module模块需要如下步骤: 1、 实现Module接口的实现类,这个类要完成基本的初始化、销毁等操作 2、 实现Handler接口的实现类,这个类主要是完成业务处理 3、 在META-INF目录下,创建modu...
阅读全文
八、 异步调用WebService
摘要: 异步,说到异步需要首先将以下同步。同步就是代码按照顺序执行,当前面的代码的请求没有正常返回结果的情况下,后面的代码是不能运行。而异步正好和这点不同,异步是代码运行后,不管当前的请求是否返回结果,后面的代码都会继续运行。 关于异步在此就不再赘述了,有兴趣的可以去网上查查这方面的资料。 1、 编写服务器端的代码。 代码package com.hoo.service;/** * <b>function:...
阅读全文
七、 用Spring创建的JavaBean发布成WebService
摘要: 1、首先,看看这个简单的类代码: 代码package com.hoo.service;/** * <b>function:</b>Spring的装载Bean的Service * @author hoojo * @createDate 2011-3-9 下午06:30:26 * @file SpringService.java * @package com.hoo.service * @projec...
阅读全文
六、 跨多个WebService管理Session
摘要: 当多个WebService的时候,我们要管理它的Session。这个时候我们得依靠ServiceGroupContext保存session信息;然后在发布WebService的时候,services.xml文件的的service表情的scope就不再说request或是transportsession了,而是application;最后同样要开启对session的管理,即options.setMa...
阅读全文
四、 用axis2的辅助工具发布、调用WebService
摘要: 这次我们编辑一个返回User对象、List<User>、Map<String, User>、User[]的形式,并且用axis2的工具完成发布WebService。不再复制class到axis2的工程目录下。 下面看看服务器端WebService代码: 代码package com.hoo.service;import java.util.ArrayList;import java.util.Has...
阅读全文
三、 复杂对象类型的WebService
摘要: 1、这次我们编写复杂点的WebService方法,返回的数据是我们定义属性带getter、setter方法JavaBean,一维数组、二维数组等。 看代码: 代码import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.util.Random;import data.User...
阅读全文
二、Axis2的简单WebService示例
摘要: 1、编写一个简单的WebService的服务器端代码,代码如下: 代码import java.util.Random;/** * <b>function:</b> WebService HelloWorld服务示例 * @author hoojo * @createDate 2011-1-5 下午03:35:06 * @file HelloWorldService.java * @package ...
阅读全文
一、Axis2 WebService开发准备工作
摘要: 上次介绍了axis1.x的用法,这次继续上次的,将叙述axis2的用法。Axis1.x在线博文:http://www.cnblogs.com/hoojo/archive/2010/12/20/1911349.html1、开发准备首先需要下载axis2的相关jar包,到axis的官方网站即可获得开发的依赖包。下载地址:http://axis.apache.org/axis2/java/core/download.cgi现在最高的版本是1.5.4的然后你需要下载官方提供的axis的eclipse插件工具,可以帮助我们打包(aar)及其生产客户端调用代码。下载页面:http://axis.apach
阅读全文
九、WebService中文件传输
摘要: WebService处理传递普通的信息,还可以传输文件,下面介绍WebService是怎么完成文件传输的。1、 首先编写服务器端上传文件的WebService方法代码上传方法和我们以前在Web中上传唯一不同的就是参数一DataHandler,可以将这类看成文件传输器,他可以把文件序列化。然后通过DataHandler可以得到一个输入流InputStream,通过这个流可以读到文件的内容。其他的操作和普通上传类似。2、 定制wsdd发布文件上传的WebService服务代码上面才xml节点元素在前面都见过了,说明下operation中的参数,注意要指定参数类型,特别是DataHandler的类型
阅读全文
六、传递、返回复杂类型的对象
摘要: 上面的服务传递的是简单数据类型,返回的也是简单数据类型。下面我们用JavaBean 、List、Map、Array等返回值或参数完成WebService。1、首先看看JavaBean模式的参数和返回值的WebService,JavaBean代码如下:代码没有上面特别就是一个普通的Java对象,里面提供一些属性及getter、setter方法和toString方法(在显示数据的时候有用),值得注意的是在远程调用的Java对象都需要实现Serializable接口,这样在网络中传递对象的时候就不会出现重复的JavaBean。用过或是了解EJB、RMI的朋友应该知道这点。序列化后的对象可以用io进行
阅读全文
axis文件传递,NoClassDefFoundError: com/sun/mail/util/LineInputStream 和 com/sun/activation/registries/LogSupport
摘要: java.lang.NoClassDefFoundError:com/sun/mail/util/LineInputStream java.lang.NoClassDefFoundError:com/sun/activation/registries/LogSupportNoClassDefFoundError: com/sun/mail/util/LineInputStreamNoClassDefFoundError: com/sun/activation/registries/LogSupport原因:mail.jar 中的方法和j2ee5中的方法有冲突。删除默认的方法:D:\Progra
阅读全文
十三、.Net调用axis WebService出现Client.NoSOAPAction的问题
摘要: 关于这个问题网上有很多解决方法,关键是AxisServlet在getSoapAction这个方法有点问题。解决方法就是集成这个AxisServlet然后重写getSoapAction方法。代码片段:[代码] 然后在web.xml中配置你继承的AxisServlet,就不再是原来的AxisServlet了。
阅读全文
十四、后记
摘要: 至此,axis的WebService的技术指南,基本就这么多内容。由于时间的仓促和个人的原因等诸多方面的因素,难免使得这篇文档存在些错误。但这篇文档上的代码都是经过运行测试通过的。要感谢广大IT朋友的无私奉献,使得这篇文档的出现。本人在学习axis的时候参阅了大量来自互联网的技术文章,以及官方的文档。参考文档:http://ws.apache.org/axis/java/user-guide.html如果你发现这篇文档有什么问题,或是对这篇文档有更好的内容补充你可以发邮件到我的邮箱或是用QQ取得联系,也欢迎去我的博客留言,也欢迎大家一起交流探讨。Email:hoojo_@126.comBlog
阅读全文
十二、用Axis操作 Header头部信息
摘要: Axis中操作Header的信息是通过Handler来完成的,在读取Header的信息的时候,可以完成Header的操作的Handler有JWSHandler、SOAPMonitorHandler、JAXRPCHandler。JWSHandler是完成jws发布模式的WebService的Header的读取操作,SOAPMonitorHandler是完成SOAPMonitor模式的,JAXRPCHandler是java rpc模式的。下面将会用JAXRPCHandler读取客户端的Header信息,然后用BasicHandler将客户端请求的Header写入客户端的响应的Header中。1、
阅读全文
十一、用工具生成代码
摘要: 1、 用Axis提供的WSDL2java工具类生成代码,命令如下:C:\SoftWare\tomcat-5.0.28\tomcat-5.0.28\webapps\AxisWebService\WEB-INF>java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java -s http://localhost:8080/AxisWebService/services/HelloWorldWSDD?wsdl –o c:\-s 是设置wsdl的路径url和是当前物理硬盘上的wsdl文件(可以将页面上的wsdl的xml文件另存为一份试试,也是可以的)-
阅读全文
十、Axis WebService常用命令和调试工具
摘要: 上面我们在发布wsdd服务的时候都会在dos窗口写上一段命令,下面还介绍下其他的几个命令:A、 AdminClient命令java org.apache.axis.client.AdminClient c:/deploy.wsdd这样就可以用AdminClient发布一个WebService了,如果你对AdminClient的参数信息不是很了解输入:java org.apache.axis.client.AdminClient就可以查看帮助了。Usage: AdminClient [Options] [list | <deployment-descriptor-files>]Processes
阅读全文
八、WebService处理异常信息
摘要: 在数据传递和远程调用过程中,有时候调用者传递错误的数据和是调用的方法错误。那我们怎样处理这个错误?方法有很多,这里介绍下用异常处理远程调用的错误方法。1、编写服务器端的异常类,在远处调用中(WebService)异常类继承RemoteException,记得要序列化下,代码如下:代码2、编写客户端的异常信息类,和前面远程传递对象一样。因为我们并不知道服务器端的异常信息类代码,但是通过wsdl的xml文件的描述我们可以知道远程异常类的基本信息:方法、方法参数、返回值等信息,下面是客户端的异常信息类代码:代码内容几乎一样,就是类名称不同。3、编写触发异常的WebService服务器端代码代码4、定
阅读全文
七、axis调用RMI模式WebService
摘要: 和先前写的web service几乎一样,不同的是这里写的WebService要实现接口,而我们实现的接口要继承rmi的Remote接口才行。1、RMI接口,很简单的2个方法,继承Remote接口代码2、实现上面的接口代码3、定制wsdd发布服务代码4、命令行发布服务java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -lhttp://localhost:8080/AxisWebService/services/AdminService deployRMI.wsdd在浏览器中输入:http://localhost:8080/A
阅读全文
五、Chain链的作用
摘要: Chain是一个链,是Handler的链。也就是说一次请求可能要执行多个Handler。1、下面我们就编写一个Handler,让它用chain的方法执行。代码上面的HandlerChain继承了SimpleChain,在构造器中创建了RequestHandler、ResponseHandler,然后用addHandler添加到chain的handler中。特别说明下,这里的chain其实也是一个handler,为什么这样说?我们继承的SimpleChain就继承了BsaicHandler这个抽象类,所以chain也是一个handler。有人想既然是handler那它的配置也应该和handler
阅读全文
四、handler的作用及特性
摘要: Axis中有一个basicHandler的抽象类,这个类可以供我们继承。可以完成很多复杂的功能,如:统计当前服务被调用的次数、验证服务调用信息等待1、下面我们继承这个类,完成统计服务调用次数的功能;RequestHandler代码如下:代码BasicHandler是一个抽象类,继承这个类需要实现invoke签名方法,上面的代码很简单,就是一个累加统计,MessageContext是当前WebService的一个上下文,可以得到当前服务的公共信息和请求信息。这里的this.getOption("state");是和wsdd中的parameter对应的。2、编写wsdd文件,加入RequestHa
阅读全文
三、取消发布的WebService(删除一个发布成功的Web服务)
摘要: 首先,取消发布也需要定制wsdd文件,undeploy.wsdd具体格式如下:[代码]同样,像上面发布WebService一样,用命令完成。命令如下:java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -lhttp://localhost:8080/AxisWebService/services/AdminService undeploy.wsdd键入命令后,回车看到:Processing file undeploy.wsdd<Admin>Done processing</Admin>就代表你取消服务成功了,那样别人就不能访问
阅读全文
二、用wsdd(Web Services Deployment Descriptor)方式发布WebService
摘要: wsdd方法比jws方法要稍微复杂些,但一定程度上比jws发布的方法要灵活。1、首先在AxisWebService工程创建一个java类,里面写简单的2个方法getName、getAge,代码如下:代码2、如果用wsdd方法首先需要定制我们的wsdd xml文件,这里命名为deploy.wsdd,创建在当前web工程的WEB-INF目录下,代码如下:代码service标签代表一个WebService服务,HelloWorldWSDD就是当前WebService的名称;provider是java的WebService类型,分别有: RPC、Document、Wrapped、Message、EJB
阅读全文
一、搭建简单的axis web服务
摘要: 1、在官方网站下载axis的工程(这个等下就有用的)和源码、jar包等,下载地址是:http://labs.renren.com/apache-mirror//ws/axis/1_4/2、解压下载的工程或源码(两个中任意一个都可以),解压axis-bin-1.4可以看到大致目录是这样的:docs是文档、lib是jar包、sample是示例、xmls是当前工程所需的xml、webapps是当前工程的webroot目录;我们打开webapps目录就可以看到一个axis的文件夹,这个文件夹里面有WEB-INF文件夹和一些页面,将axis复制到你的tomcat的webapps目录下。然后启动tomca
阅读全文
Axis1.x WebService开发指南—目录索引
摘要: Axis1.x WebService开发指南 Axis的简单入门实例 Axis的jws发布WebService Axis的wsdd模式发布WebService Axis中传递复杂对象和内部类 Axis中的handler、chain的特性 Axis中处理异常信息 Axis中传递文件信息 Axis常用命令介绍 Axis 提供的工具和调试 Axis 的wsdl生成代码 Axis的Header信息操作 .Net调用Axis出现的问题
阅读全文