`
zhang_xzhi_xjtu
  • 浏览: 536353 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

基于jaxws的SOA的exception系统设计

    博客分类:
  • SOA
阅读更多
这个是对jaxws上的fault的讨论。jaxws的web service的自定义fault.
http://zhang-xzhi-xjtu.iteye.com/blog/372877

ws的异常设计
对jaxws的ws fault研究后发现,fault的定义比较怪,所以决定系统中所有的ws fault用一个统一的格式,即只定义一个WSFaultException,然后所有的ws都声明抛出这个WSFaultException。这样的优点是ws的异常比较统一,比较好处理。client端有可能是基于多个平台的,java,.net,client也比较好处理。

系统异常的设计
系统中的exception采用一个扁平的继承体系结构,都是继承于同一个MyException,所有逻辑层和dao层的exception都会转化会这个体系结构中的exception,然后抛出来。java的exception分为checked和unchecked,经过一番权衡,决定这个exception的体系是基于unchecked,这样在很多地方省下了无谓的声明,而且整个code看着比较干净。常用的ORM工具,如Hibernate,Ibatis,著名的spring都是用一个自成体系的unchecked exception体系结构来表述异常。所以这个设计应该是可行的。定义好MyException,然后可以定义一些它的常用的子类,如ParaException,NotExistException等等。

异常的处理
对于系统中的异常的处理放在ws的边界处。定义一个interface叫做ExceptionHandler,里面只有一个api,就是对exception的处理。ws的边界处引入一个ExceptionHandler的实现类,这个类的实际功能是持有一个ExceptionHandler的列表,然后依次调用各个ExceptionHandler的方法处理exception,常用的ExceptionHandler可以预定义好供系统使用,比如ConvertHandler(转换各种Exception到WSFaultException),RethrowHandler(重新抛出exception)等等。这个一个典型的链式异常处理。异常处理链是通过xml文件来配置的,修改和扩展都比较方便。

异常的定义
明显的,MyException和MyException大部分的定义是一样的,主要有errorcode,errormsg,subsystemName,isClientException和detail。errorcode可以看作是一个比较强制的约定,这样防止了exception类型爆炸。isClientException表征了一个异常是由于client的操作错误造成的还是一个server err。errormsg是一个可以定制化的error msg,同一个类型的MyException可以根据异常的实际情况定制该信息。

小结:

1 ws的异常统一简洁。
2 系统的异常设计为一个unchecked异常的扁平体系,并且提供了一些常用的异常,server端编程时可以大量使用预定义异常。但是如果系统有特殊异常,可以方便的扩展,定义新的MyException的子类,然后使用。
3 系统提供默认的异常处理链,大部分情况下系统使用该机制就可以了。如果要扩展,只需要定义新的ExceptionHandler,然后修改配置文件就行了。
4 对于异常的log,倾向于在第一次知道该异常的时候打一个log,不重复打。可以在exception的定义中加一个字段用来控制打log,但是觉得这是如何处理exception的问题,在exception中加这个字段比较怪,所以不予采用。另一个方式是依靠程序规范。
分享到:
评论

相关推荐

    基于jaxws-ri的webservice项目

    【基于jaxws-ri的Web服务项目】 在Java世界中,Web服务是一种常见的跨平台通信方式,它允许不同系统间的应用程序通过HTTP协议交换数据。本项目是基于Java API for XML Web Services (JAX-WS) 的参考实现——JAXWS-...

    jaxws-rt-2.3.3

    jaxws-rt-2.3.3

    jaxws入门经典

    jaxws入门经典,含有循序渐进的例子,非常详细,看完后就会用jaxws接口开发webservice

    JAXWS官方jar文件

    JAXWS官网上下下来的开发java webservice用的jar文件,在cmd下输入java -jar JAXWS2.1.2-20070917.jar即可使用

    jaxws-ri-2.3.0官方jar包

    它提供了一种简单的方式来处理基于SOAP(Simple Object Access Protocol)的Web服务,是Java EE环境中开发SOA(Service-Oriented Architecture)应用的核心组件。**jaxws-ri-2.3.0** 是JAX-WS的一个实现版本,由...

    jaxws-api.jar

    还在为找不到jar文件烦心吗,不用了到我空间来有你想要的,持续更新。。。 jaxws-api.jar

    jaxws-ri.rar

    使用JAX-WS,开发者可以创建基于Java的Web服务,通过注解来定义服务接口和方法,然后使用`wsimport`工具生成客户端和服务端的代理类。此外,还可以利用JAX-WS的动态代理功能,无需预生成客户端代码即可在运行时动态...

    jaxws-api-工具

    2. **jaxws-api-2.2.11.jar**:这是JAX-WS的主要API库,包含了诸如`WebServiceRef`注解、`Service`类、`PortInfo`接口等核心组件,它们是实现基于SOAP的Web服务和客户端的关键。JAX-WS 2.2.11版本支持WS-I Basic ...

    JAXWS工具包

    JAXWS的工具包,java中采用jaxws创建webservice会用到此工具包

    cxf-rt-frontend-jaxws-3.0.1-API文档-中文版.zip

    赠送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...

    jaxws-ri 2.3完整包

    **标题解析:** "jaxws-ri 2.3完整包" 指的是...综上,"jaxws-ri 2.3完整包"是一个用于在Tomcat上开发和部署基于JAX-WS的Web服务的工具集,包含了完整的运行时环境和必要的开发支持,是Java Web服务开发者的重要资源。

    webservice中用到的jar,xfire-jaxws-1.2.6.jar

    webservice中用到的jar,xfire-jaxws-1.2.6.jar,xfire-jaxws-1.2.6.jar,xfire-jaxws-1.2.6.jar

    JAXWS2.2当前时间最新版

    **JAXWS2.2详解** ...通过深入理解和熟练运用JAX-WS 2.2,开发者可以构建出高效、可靠的Web服务系统。而JAXWS2.2.3-20110209.zip中的"jaxws-ri"则为开发者提供了实践这些概念和特性所需的全套工具和库。

    jaxws需要jar包

    jaxws需要jar包

    endorsed 解决soa连接错误

    SOA是一种设计原则,允许应用程序组件之间通过网络上的服务进行通信。在Java中,如果不同库之间存在版本冲突,可能会导致`java.lang.LinkageError`,特别是涉及到Java API的更新时,如JAXB或JAX-WS。 描述中提到,...

    jaxws-api-2.1-1

    **jaxws-api-2.1-1** 是一个与Java API for XML Web Services(JAX-WS)相关的软件包,版本号为2.1-1。...开发者可以利用JAX-WS的强大功能,轻松地构建符合SOA(Service-Oriented Architecture)架构的分布式系统。

    JAXWS2.2-20091203.zip

    在"JAXWS2.2-20091203.zip"这个压缩包中,包含的子文件"jaxws-ri"是JAX-WS的参考实现(Reference Implementation)。这个实现提供了运行时环境,使得开发者能够在本地环境中测试和部署基于JAX-WS的服务。JAX-WS RI...

    jaxws-ri-2.3.1.zip

    总的来说,"jaxws-ri-2.3.1.zip"是一个全面的JAX-WS实现,为开发者提供了方便的工具和环境来开发、测试和部署基于SOAP的Web服务。它的使用不仅简化了开发流程,还增强了Web服务的互操作性和安全性。

    geronimo-jaxws_2.2_spec-1.1.jar

    geronimo-jaxws_2.2_spec-1.1.jar

    Jaxws+Spring整合实例

    本实例“Jaxws+Spring整合”旨在演示如何在Spring环境中集成JAX-WS,实现一个完整的Web服务解决方案。首先,我们需要了解JAX-WS的基本概念和工作原理: 1. **JAX-WS基础**:JAX-WS基于SOAP协议,通过XML来定义服务...

Global site tag (gtag.js) - Google Analytics