WAS MQ Portal 安装配置 监控优化 迁移

开发中的内存溢出问题,是架构设计问题?还是编码问题? IBM软件人才成长专区 集思广益,WSC有奖征集辩论主题活动

返回列表 发帖

[应用发布] Websphere Adapter 中错误处理的原理与应用

WebSphere Adapter 6.2 中引入了一个非常重要的功能 — 错误绑定。通过错误绑定, Adapter 能够对异常(Exception)实现不同的处理流程。本文首先介绍错误绑定的工作机制,并对 WebSphere Adapter 6.2 所支持的全部错误绑定类型进行了分析,使读者在理解错误绑定原理的基础上,能够很好地使用 WebSphere Adapter 6.2 所提供的错误绑定

错误处理机制简介
什么是错误绑定
在应用系统中,异常(Exception)是经常出现的。这些异常通常分为 2 类,一类是运行时异常(Runtime Exception),这类异常通常是因为代码缺陷造成的;另一类是业务逻辑异常 (Business Exception),这类异常通常是由于数据的不准确、不完善、应用系统无法处理造成的。
对于系统开发人员而言,运行时异常容易被捕获并进行相应的处理,处理的方式主要有忽略、包装后重新抛出、记录日志等。对于业务逻辑相关的异常,开发人员很难去分析和处理,最佳的处理方式是把这些异常信息提供给应用系统的调用者,由调用者对这些业务逻辑进行相关处理。应用系统传递给调用者的业务逻辑错误不应该是一个异常类,而是与业务相关的结构化异常数据,这样调用方不用关心服务的实现方式和编程语言,只需关注返回的数据(正确结果或者异常数据),并对这些数据进行相应的处理。另外,这些数据的格式通常是与编程语言无关的,而这正是 Websphere Adapter 的错误绑定(Fault Binding)特性所支持的。也就是说,错误绑定是 WebSphere Adapter 提供的一种与编程语言无关的处理业务逻辑异常的机制,通过此错误处理机制,能够将运行时异常和业务逻辑异常进行区分,并给应用系统的调用者提供更为有意义的错误数据。
注:错误绑定机制目前只能在 WebSphere Process Server 以及 WebSphere Application Server Feature Pack 环境中工作。
错误绑定实现原理
错误绑定是 Websphere Adapter 支持的一种错误处理机制,用在 outbound 应用场景中。错误绑定具有以下几个要素:
  • 错误选择器(Fault selector)
  • 错误名称(Fault name)
  • 错误绑定类型(Fault binding type)
  • 错误数据(Fault data)
当 WebSphere Adapter 遇到异常时,WebSphere Adapter 先调用错误选择器判断此异常是否为 WebSphere Adapter 支持的错误,如果不是,则不做处理,如果是,则调用错误选择器生成对应的错误名字。然后根据错误名字找到对应的错误绑定类型,最后调用错误绑定类型生成相应的错误数据,并将此错误数据返回给调用者。图 1 是整个错误绑定处理的流程图。

图 1. 错误绑定流程图


WebSphere Adapter 错误绑定的配置
WebSphere Adapter 6.2 的实现已经支持错误绑定了,如果用户要在自己的应用系统中使用错误绑定,就需要配置相应的文件— import 文件和 wsdl 文件。WebSphere Adapter 在默认情况下可以直接为用户生成预定义好的错误配置,如果用户需要使用自己定义的错误类型,则需要在 .import 文件与 .wsdl 文件中进行相应的配置。
在 import 文件中,首先需要配置一个错误选择器(faultSelector),然后在每个 method 对应的 methodBindng 中,配置支持的 faultBinding,包括错误名称和错误绑定类型,它的格式如下:
<faultBinding fault="fault name" faultBindingType=" fault binding type"/>
下面是 JDBC Adapter Outbound create 操作错误绑定的配置实例。

清单 1. 错误绑定 import 文件配置实例
<?xml version="1.0" encoding="UTF-8"?>
<scdl:import name="Output"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:eis="http://www.ibm.com/xmlns/prod/websphere/scdl/eis/6.0.0"
xmlns:scdl="http://www.ibm.com/xmlns/prod/websphere/scdl/6.0.0">
  <interfaces>   ...  </interfaces>
  <esbBinding xsi:type="eis:EISImportBinding"
  faultSelector="com.ibm.j2ca.extension.emd.runtime.WBIFaultSelectorImpl"
  dataBindingType="com.ibm.j2ca.jdbc.emd.databinding.JDBCDataBindingGenerator">
    <resourceAdapter name="JDBCINConnectorApp.IBM WebSphere Adapter for JDBC"
    type="com.ibm.j2ca.jdbc.JDBCResourceAdapter" version="6.2.0.2"/>
    <connection type="com.ibm.j2ca.jdbc.JDBCManagedConnectionFactory"
    interactionType="com.ibm.j2ca.jdbc.JDBCInteractionSpec">
      <properties>
        ...
      </properties>
    </connection>
    <methodBinding method="createCUSTOMER">
    <faultBinding fault="INTEGRITY_CONSTRAINT_VIOLATION"      
    faultBindingType="com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl"/>

    <faultBinding fault="MISSING_DATA"      
        faultBindingType="com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl"/>

        <faultBinding fault="OBJECT_NOTFOUND_EXCEPTION"      
        faultBindingType="com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl"/>

        <faultBinding fault="UNIQUECONSTRAINT_VIOLATION"      
        faultBindingType="com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl"/>

      <interaction>
        <properties>
          <functionName>Create</functionName>
        </properties>
      </interaction>
    </methodBinding>
    <!-- other methodBinding -->
  </esbBinding>
</scdl:import>

清单 1 中粗体部分分别是前文中提到的错误绑定的要素 -- 错误选择器和错误名字,错误绑定类型。
在配置 wsdl 文件前,用户首先需要准备错误数据。这些错误数据可以是用户自己定义的,也可以是 WebSphere Adapter 提供了的默认错误数据。图 2 是 WebSphere Adapter 默认提供的 RecordNotFound 错误业务对象定义。

完整内容的学习,请访问:
http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0912_wuwei_adaptererror/index.html

Websphere Adapter 中错误处理的原理与应用.rar (186.6 KB)

售价: 金钱 1 W币  [记录]  [购买]

谢谢LZ分享

TOP

返回列表