SOA之添加异常处理

创建binding和policy文件
我们需要异常处理时,我们需要设计异常处理的方式和处理的策略。其实就是要建立两个xml文件。
一个binding文件和一个policy文件。
1、     打开JDeveloper选择要验证的模块,选择SOAContent。

2、  在这个目录下创建2个文件:fault-bindings.xml文件和一个fault-policies.xml文件。
Ⅰ、fault-bindings.xml的内容(这个文件是一个策略binding文件,这里策略针对的级别主要composite、compnent、refenrence级别,后面可以加上相对应的策略,特别要注意一下版本号)。
<?xml version="1.0" encoding="UTF-8" ?>
<faultPolicyBindings version="1.0.0"
                     xmlns="http://schemas.oracle.com/bpel/faultpolicy"
                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <composite faultPolicy="MachineDocumentFaultPolicy"/>
</faultPolicyBindings>
Ⅱ、fault-policies.xml的内容(这里的策略文件是针对composite级别的,我们这里策略的id要和binding文件里的策略id相对应。这里的策略主要处理了remoteFault、bindingFault、runtimeFault,处理的action都交给了ora-retry,这里的ora-retry设置了重试3次,每次延迟5秒执行;如果重试错误,交给人工处理)。
<?xml version="1.0" encoding="UTF-8" ?>
<faultPolicies xmlns="http://schemas.oracle.com/bpel/faultpolicy">
  <faultPolicy version="1.0.0" id=" MachineDocumentFaultPolicy"
               xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
               xmlns:xs="http://www.w3.org/2001/XMLSchema"
               xmlns="http://schemas.oracle.com/bpel/faultpolicy"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Conditions>
      <!-- Step 1.1.1.1: Add your fault handler for remote fault here: -->
      <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
                 name="bpelx:remoteFault">
        <condition>
          <action ref="ora-retry"/>
        </condition>
      </faultName>
      <!-- Step 1.1.1.2: Add your fault handler for binding fault here: -->
      <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
                 name="bpelx:bindingFault">
        <condition>
          <action ref="ora-retry"/>
        </condition>
      </faultName>
      <!-- Step 1.1.1.3: Add your fault handler for runtime fault here: -->
      <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
                 name="bpelx:runtimeFault">
        <condition>
          <action ref="ora-retry"/>
        </condition>
      </faultName>
    </Conditions>
    <Actions>
            <Action id="ora-retry">
                <retry>
                    <retryCount>3</retryCount>
                    <retryInterval>5</retryInterval>
                    <exponentialBackoff/>
                    <retryFailureAction ref="ora-human-intervention"/>
                </retry>
            </Action>
            <Action id="ora-human-intervention">
                <humanIntervention/>
            </Action>
        </Actions>
  </faultPolicy>
</faultPolicies>
3、然后点击部署到服务器上

4、发布完成后,登入http://172.16.0.238:7001/sbconsole

5、选择资源浏览器

 

6、选择我们要测试的接口,然后点击bug

7、 进入   Debug 后,可以看到表单数据,然后点击执行(因为这里的数据是业务数据,不过不通过会报出验证错误;而不会出现异常,异常的出现是因为   DB 断开了,服务和 DB 不能正常交互,会出现   timeout 的异常)。


8、 提交后等待执行结果(这里会执行较长时间,耐心等待)。


9、 执行完成后,查看响应文档,可以看到   timeout 错误。

10、这样可以登入http://172.16.0.238:7001/em来查看服务运行实例的状态,可以看到一个320022的 实例在运行已经完成。

11、点击恢复,我们可以进入看到这个服务实例在重试了3次,每次间隔5秒。

12、     继续点击恢复后,我们可以对这个服务实例进行恢复操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值