八、WebService处理异常信息

简介:

在数据传递和远程调用过程中,有时候调用者传递错误的数据和是调用的方法错误。那我们怎样处理这个错误?方法有很多,这里介绍下用异常处理远程调用的错误方法。

1、编写服务器端的异常类,在远处调用中(WebService)异常类继承RemoteException,记得要序列化下,代码如下:

 

代码

 

 

2、编写客户端的异常信息类,和前面远程传递对象一样。因为我们并不知道服务器端的异常信息类代码,但是通过wsdl的xml文件的描述我们可以知道远程异常类的基本信息:方法、方法参数、返回值等信息,下面是客户端的异常信息类代码:

 

代码

内容几乎一样,就是类名称不同。

3、编写触发异常的WebService服务器端代码

 

代码

 

 

4、定制wsdd文件,发布当前WebService。

 

代码

 

 

特别说明,这里多了3个xml标签元素。operation、fault、typeMapping,下面将依次介绍。

operation看看这个标签中的内容,就和我们最先看到的wsdl的xml文件中的方法标签很像。没错这里它指定的就是一个方法,operation就指定触发异常信息的方法。和你在服务器端触发异常的WebService的方法对应,qname是限定名称,xmlns是限定名称的命名空间。

fault的name一个名称,可以随便取。type就是你服务器端抛出异常的类型,这里服务器端抛出的RemoteServerException,所以类型就是RemoteServerException。如果你服务器端抛出的是NullPointException这里的type就是NullPointException。

typeMapping这个也很关键,和前面的beanMapping有几分相似特别是前面一段qname、xmlns、以及languageSpecificType都是一样的,用法也一样。分别和客户端的new QName("ns:CustomException", "Exception");中的对应;其中serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"就是序列化的工厂类,deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"这个不说你也知道是反序列化的工厂类,encodingStyle这个是编码样式。

5、用定制好的wsdd文件发布我们的WebService,依旧是命令行:

C:\SoftWare\tomcat-5.0.28\tomcat-5.0.28\webapps\AxisWebService\WEB-INF>java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -lhttp://localhost:8080/AxisWebService/services/AdminService deployException.wsdd

发布完成后,在浏览器中输入:

http://localhost:8080/AxisWebService/servlet/AxisServlet

即可查看刚才发布的服务信息,但是你点击wsdl链接的时候并不能看到xml的内容,那是因为服务器端抛出了异常导致的。这个不是错误是正常的,不过你可以在web.xml中配置异常的信息页面。

6、编写客户端代码,这里的代码和传递对象的WebService也很类似

 

代码

 

 

看上面的registerTypeMapping和wsdd文件中的typeMapping有些相同之处吧,下面运行下上面的代码,结果如下:

 

代码

 

 

服务器端控制台会输出:Remote Servier Exception

这是在创建异常的时候,在构造函数中输出的。






本文转自hoojo博客园博客,原文链接:http://www.cnblogs.com/hoojo/archive/2010/12/20/1911384.html,如需转载请自行联系原作者
目录
相关文章
|
4月前
WebService - MEP(信息交换模式)
WebService - MEP(信息交换模式)
64 0
|
开发工具 虚拟化
使用VMware VSphere WebService SDK进行开发 (四)——获取集群(Cluster, ComputeResource)的相关信息
获取集群的信息不再过多的赘述,详细读过前面两篇文章的读者已经很快上路子了~ 疯狂罗列代码: private static TraversalSpec getComputeResourceTraversalSpec() { SelectionSpec ss = new SelectionSpec(); ss.
1495 0
|
开发工具 虚拟化 存储
使用VMware VSphere WebService SDK进行开发 (六)——检测告警信息
获取告警信息相对而言比较简单点,这里先陈述告警信息的pojo类,作为存储告警信息的源头(省略getter和setter方法): public class AlarmItem { //对象 private String ObjectName; //状态 private Manag...
1490 0
|
4月前
|
缓存 应用服务中间件 数据库
Python Web Service开发及优化
随着互联网的快速发展,Web服务已成为现代技术的核心。Python作为一种功能强大且易于学习的编程语言,在Web服务开发领域占据着重要地位。Python Web服务开发的重要性在于它能够提供高效、可扩展且易于维护的解决方案。本篇博客将探讨如何使用Python的Flask框架、Gunicorn WSGI服务器和Nginx网页服务器来实现高性能的Web服务。
|
4月前
|
XML Java 应用服务中间件
WebService - Axis2基于JAX-WS开发WebService并发布多个WebService
WebService - Axis2基于JAX-WS开发WebService并发布多个WebService
67 0
|
4月前
|
Java 应用服务中间件 Spring
WebService - Axis2使用services.xml进行开发server与client(未与Spring整合)
WebService - Axis2使用services.xml进行开发server与client(未与Spring整合)
105 0
|
4月前
|
Java 应用服务中间件 Spring
WebService - CXF开发Server和Client(main方法测试)
WebService - CXF开发Server和Client(main方法测试)
70 0
|
存储 测试技术
Loadrunner 脚本开发-利用Loadrunner生成Web service测试脚本
Loadrunner 脚本开发-利用Loadrunner生成Web service测试脚本
103 0
Loadrunner 脚本开发-利用Loadrunner生成Web service测试脚本
|
XML 存储 测试技术
Loadrunner 脚本开发-soap_request函数介绍及WebService接口测试
Loadrunner 脚本开发-soap_request函数介绍及WebService接口测试
135 0