12 2010 档案
九、WebService中文件传输
摘要:WebService处理传递普通的信息,还可以传输文件,下面介绍WebService是怎么完成文件传输的。1、 首先编写服务器端上传文件的WebService方法代码上传方法和我们以前在Web中上传唯一不同的就是参数一DataHandler,可以将这类看成文件传输器,他可以把文件序列化。然后通过DataHandler可以得到一个输入流InputStream,通过这个流可以读到文件的内容。其他的操作和普通上传类似。2、 定制wsdd发布文件上传的WebService服务代码上面才xml节点元素在前面都见过了,说明下operation中的参数,注意要指定参数类型,特别是DataHandler的类型 阅读全文
posted @ 2010-12-23 11:44 hoojo 阅读(36148) 评论(2) 推荐(3) 编辑
六、传递、返回复杂类型的对象
摘要:上面的服务传递的是简单数据类型,返回的也是简单数据类型。下面我们用JavaBean 、List、Map、Array等返回值或参数完成WebService。1、首先看看JavaBean模式的参数和返回值的WebService,JavaBean代码如下:代码没有上面特别就是一个普通的Java对象,里面提供一些属性及getter、setter方法和toString方法(在显示数据的时候有用),值得注意的是在远程调用的Java对象都需要实现Serializable接口,这样在网络中传递对象的时候就不会出现重复的JavaBean。用过或是了解EJB、RMI的朋友应该知道这点。序列化后的对象可以用io进行 阅读全文
posted @ 2010-12-23 11:43 hoojo 阅读(17579) 评论(1) 推荐(3) 编辑
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 阅读全文
posted @ 2010-12-21 11:18 hoojo 阅读(1647) 评论(1) 推荐(1) 编辑
十三、.Net调用axis WebService出现Client.NoSOAPAction的问题
摘要:关于这个问题网上有很多解决方法,关键是AxisServlet在getSoapAction这个方法有点问题。解决方法就是集成这个AxisServlet然后重写getSoapAction方法。代码片段:[代码] 然后在web.xml中配置你继承的AxisServlet,就不再是原来的AxisServlet了。 阅读全文
posted @ 2010-12-20 14:41 hoojo 阅读(3778) 评论(0) 推荐(0) 编辑
十四、后记
摘要:至此,axis的WebService的技术指南,基本就这么多内容。由于时间的仓促和个人的原因等诸多方面的因素,难免使得这篇文档存在些错误。但这篇文档上的代码都是经过运行测试通过的。要感谢广大IT朋友的无私奉献,使得这篇文档的出现。本人在学习axis的时候参阅了大量来自互联网的技术文章,以及官方的文档。参考文档:http://ws.apache.org/axis/java/user-guide.html如果你发现这篇文档有什么问题,或是对这篇文档有更好的内容补充你可以发邮件到我的邮箱或是用QQ取得联系,也欢迎去我的博客留言,也欢迎大家一起交流探讨。Email:hoojo_@126.comBlog 阅读全文
posted @ 2010-12-20 14:41 hoojo 阅读(801) 评论(0) 推荐(1) 编辑
十二、用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、 阅读全文
posted @ 2010-12-20 14:40 hoojo 阅读(14215) 评论(0) 推荐(0) 编辑
十一、用工具生成代码
摘要:1、 用Axis提供的WSDL2java工具类生成代码,命令如下:C:\SoftWare\tomcat-5.0.28\tomcat-5.0.28\webapps\AxisWebService\WEB-INFjava -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文件另存为一份试试,也是可以的)- 阅读全文
posted @ 2010-12-20 14:38 hoojo 阅读(4157) 评论(3) 推荐(0) 编辑
十、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 阅读全文
posted @ 2010-12-20 14:36 hoojo 阅读(5582) 评论(0) 推荐(0) 编辑
八、WebService处理异常信息
摘要:在数据传递和远程调用过程中,有时候调用者传递错误的数据和是调用的方法错误。那我们怎样处理这个错误?方法有很多,这里介绍下用异常处理远程调用的错误方法。1、编写服务器端的异常类,在远处调用中(WebService)异常类继承RemoteException,记得要序列化下,代码如下:代码2、编写客户端的异常信息类,和前面远程传递对象一样。因为我们并不知道服务器端的异常信息类代码,但是通过wsdl的xml文件的描述我们可以知道远程异常类的基本信息:方法、方法参数、返回值等信息,下面是客户端的异常信息类代码:代码内容几乎一样,就是类名称不同。3、编写触发异常的WebService服务器端代码代码4、定 阅读全文
posted @ 2010-12-20 14:31 hoojo 阅读(13485) 评论(0) 推荐(1) 编辑
七、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 阅读全文
posted @ 2010-12-20 14:30 hoojo 阅读(3218) 评论(0) 推荐(1) 编辑
五、Chain链的作用
摘要:Chain是一个链,是Handler的链。也就是说一次请求可能要执行多个Handler。1、下面我们就编写一个Handler,让它用chain的方法执行。代码上面的HandlerChain继承了SimpleChain,在构造器中创建了RequestHandler、ResponseHandler,然后用addHandler添加到chain的handler中。特别说明下,这里的chain其实也是一个handler,为什么这样说?我们继承的SimpleChain就继承了BsaicHandler这个抽象类,所以chain也是一个handler。有人想既然是handler那它的配置也应该和handler 阅读全文
posted @ 2010-12-20 14:27 hoojo 阅读(3925) 评论(0) 推荐(0) 编辑
四、handler的作用及特性
摘要:Axis中有一个basicHandler的抽象类,这个类可以供我们继承。可以完成很多复杂的功能,如:统计当前服务被调用的次数、验证服务调用信息等待1、下面我们继承这个类,完成统计服务调用次数的功能;RequestHandler代码如下:代码BasicHandler是一个抽象类,继承这个类需要实现invoke签名方法,上面的代码很简单,就是一个累加统计,MessageContext是当前WebService的一个上下文,可以得到当前服务的公共信息和请求信息。这里的this.getOption("state");是和wsdd中的parameter对应的。2、编写wsdd文件,加入RequestHa 阅读全文
posted @ 2010-12-20 14:25 hoojo 阅读(6028) 评论(1) 推荐(0) 编辑
三、取消发布的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.wsddAdminDone processing/Admin就代表你取消服务成功了,那样别人就不能访问 阅读全文
posted @ 2010-12-20 14:24 hoojo 阅读(6120) 评论(0) 推荐(0) 编辑
二、用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 阅读全文
posted @ 2010-12-20 14:22 hoojo 阅读(25458) 评论(7) 推荐(3) 编辑
一、搭建简单的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 阅读全文
posted @ 2010-12-20 14:19 hoojo 阅读(19452) 评论(2) 推荐(3) 编辑
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出现的问题 阅读全文
posted @ 2010-12-20 14:14 hoojo 阅读(20537) 评论(1) 推荐(6) 编辑