快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

和记怡情娱:如何实现 SCA 的异常处理机制



小序

当前 Service Component Architecture(SCA)和 Service Data Object(SDO)是构建 Service Oriented Architecture(SOA)系统的两大年夜布局支柱,同时基于 SCA 的办事调用是实现企业营业流程的紧张包管。然则,这种办事调用弗成能总会成功完成并返回必要的结果,它的散播式和异构的天性使得它分外轻易掉败。这种掉败可所以由办事本身引起的,如输入参数验证掉败,或只是办事实现的一个 bug,或通信问题等等。那么若何在 SCA 下有效地、合理地构建非常处置惩罚机制对前进系统的稳定性和靠得住性是至关紧张的。

SCA 1.0 规范在 SCA 编程模型下定义了两种非常,分手是 ServiceRuntimeException(SRE)用来封装 SCA 组件之间和组件内部发生的系统非常,ServiceBusinessException(SBE)用来封装营业逻辑非常。此中 SBE 可以承载数据工具,这样就能给开拓者的非常处置惩罚规划供给可决策的非常数据。

SCA1.0 的先容

SCA 是一个可履行的模型,用于将不合的办事集成到一个营业办理规划。它简化了实现营业办事的组件编程模型,这些组件可以应用不合编程说话实现,比如 Java、C++、BPEL 等等。SCA 带来的一些益处主要为:

松耦合

组件间的集成不必要知道彼此是基于何种编程说话实现的。在同步、异步环境下,组件都可以被方便的调用。

可扩展性

组件可被简单的被调换。既有的办事可被用来创建新的办理规划(自下而上),也可营业建模和开拓(自上而下)。

临盆率

SCA 可让你专心于阐发营业逻辑,而不必要过多的去担心系统架构。SCA 简化了所有开拓者的应用体验(包括 J2EE 和集成开拓者)。

SCA 1.0 规范中定义了 SCA Domain(SCA 域)、Composite(和记怡情娱办事组件复合体)、Component(办事组件)、Binding(绑定)、Reference(引用)、 Service(办事)、Property(属性)等观点如图 1 所示

图 1. SCA 属性的定义

Component 是 SCA 中的基础组成元素和基础构建单位,也是我们详细实现营业逻辑的地方。我们可以把它当作是构建我们利用的积木。我们可以异常轻易地把传统的 POJO,无状态会话 BEAN 等包装成 SCA 中的 Component。多个 Component 组合在一路就构成了 Composite,我们可以当作是各个办事组件构成的利用系统或是利用系统的子系统。而多个 Composite 组合在一路就构成了 SCA Domain。 SCA Composite 的主要接口规范是基于 WSDL(Web Service Description Language)的,别的为了给 Java 编程职员供给一个对照直接的接口,SCA 部分组件也供给了 Java 接口。是以,应用 Composite 的客户端可以选择应用 WSDL 接口或 Java 接口。

SCA 经由过程 Binding 的观点可以为 Web Service、SCA、JCA、JMS 等办事调用供给的进口,这个进口叫 Service(办事),而 Composite 本身可能也必要调用其余办事,这个调用出口叫 Reference(引用)。无论是接口照样引用,其调用规范都是 WSDL 或 Java 接口。

绑定(Binding)的先容

Binding 是 SCA 中异常紧张的观点,它使整合 SCA 封装的异构办事组件成为可能。到今朝为止,Web Service Binding、JCA Binding 和 JMS Binding 1.0 规范已经宣布,具体文档信息可以从 OSOA 网站得到。下面我们简单先容一下这三个绑定:

图片看不清楚?请点击这里查看原图(大年夜图)。

SCA 中,数据工具的载体是 Service Data Object(SDO)。SDO 是一个开放标准数据模型编程 API,容许开拓职员在较高的级别方便地操作数据。我们可以把有效的非常信息封装成一个 SDO 或者是嵌套的 SDO,这样调用者经由过程 SDO 的描述就可以准确的掏出必要的非常信息。(SDO 的具体应用要领和 API 的调用请参和记怡情娱阅 SDO2.1 规范。)

下面我们经由过程一个例子来懂得一下 SCA 的非常处置惩罚是若何实现的。

实现 SCA 非常处置惩罚的例子-TestErrorHandling

我们在构建和测试 TestErrorHandling 这个利用法度榜样时刻,会用到 Websphere Integration Developer(WID)和 Websphere Process Server(WPS)。

WID 是基于 RAD(Rational Application Developer)的开拓情况,不仅供给了一个使可视的组件与后端实现相分离的层次布局,而且对本地和远程 EIS(企业信息系统)上作为组件的营业流程的开拓、调试、装置、支配等各类功能供给了可视化编辑器,这使得各个组件和它们的实现相分离。开拓职员无需深入懂得各个组件的实现便能应用 WID 开拓各类集成利用法度榜样。

WPS 是由详细的营业整合观点、利用办事器技巧以及最新的公开标准而成长而来的下一代营业流程整合办事器。基于现有的公开标准,它实现了简单的编程模型办事组件模型 SCA(Service Component Architecture),调用模型,以及支配模型。

在 TestErrorHandling 利用法度榜样中,如图 3 所示,我们会构建两个用 Java 实现的 SCA 办事组件。一个是 Caller,其接口为 CallerInterface.wsdl,实现为 CallerImpl。另一个是 Callee,其接口为 CalleeInterface.wsdl,实现为 CalleeImpl。同时让 Caller 组件引用 Callee 组件的 CalleeInterface 接口。当 Caller 组件调用 Callee 组件的时刻,Callee 组件会抛出 SBE,此中 SBE 会携带一个 DataObject,Caller 组件会捕捉到 SBE 并且获得其携带的 DataObject。

5.CallerInterface 接口包孕 send 操作,输入参数是名为 message 的字符串,输出参数是名为 status 的字符串。CalleeInterface 接口包孕 receive 操作,输入参数是名为 message 的字符串,输出参数是名为 status 的字符串,Fault 参数是名为 FaultData 的 FaultBO。可以经由过程点击接口编辑器上方的 按钮来添加一个操作, 按钮来添加一个 Fault。经由过程 分手来添加输入和输出参数。如图 6、图 7 所示:

图 6. 定义 Caller 接口

图 7. 定义 Callee 接口

创建办事组件。双击打开 TestErrorHandling 模块的图形化编辑器,然后把 Java 组件图标 拖拽到编辑器中和记怡情娱即天生一个 Java 办事组件,并把名称改为 Caller,同样再创建另一个 Java 办事组件,命名为 Callee。如图 8 所和记怡情娱示:

图片看不清楚?请点击这里查看原图(大年夜图)。

上图中高亮处显示的代码行便是我们可以给 receive 措施添加营业代码的地方。我们让 Callee 的 receive 措施抛出一个 ServiceBusinessException,同时携带我们构造的 FaultBO。

代码清单 1. CalleeImpl.java

public String receive(String message) {

System.out.println("Enter CalleeImpl.receive(String) Method");

ServiceManager serviceManager = new ServiceManager();

BOFactory boFactory =

(BOFactory) serviceManager.locateService("com/ibm/websphere/bo/BOFact和记怡情娱ory");

System.out.println("奸淫奸淫奸淫奸淫 BOFactory created 奸淫奸淫奸淫奸淫");

DataObject faultBO = boFactory.create("http://TestErrorHandling",

"FaultBO");

System.out.println("奸淫奸淫奸淫奸淫 FaultBO created 奸淫奸淫奸淫奸淫");

faultBO.setString("ErrorCode", "1001");

faultBO.setString("ErrorMSG", "Message Incorrect");

try {

@SuppressWarnings("unused")

int i = 1 / 0;

} catch (Exception e) {

ServiceBusinessException sbe = new ServiceBusinessException(faultBO);

throw sbe;

}

System.out.println("Enter CalleeImpl.receive(String) Method");

return "Success";

}

11.双击 Caller 组件,天生 Caller 组件实现类的基础框架 CallerImpl.java。我们让 Caller 的 send 措施捕获 ServiceBusinessException,同时获得 FaultBO。

图 12. 启动 Test Module

图片看不清楚?请点击这里查看原图(大年夜图)。

3.点击 按钮,返回参数 status 的值为 Failed。查看 SystemOut.log 文件,Caller 组件获得了 FaultBO。如图 13 所示:

图 13. 运行利用法度榜样

图片看不清楚?请点击这里查看原图(大年夜图)。

经由过程这个简单例子的构建和测试我们可以感到到,对付 SCA 非常处置惩罚机制的实现照样对照简单。开拓职员只必要把有效的非常信息构建成 SDO,然后把 SDO 放到 SBE 中抛出就可以了。当然什么样的信息是有效非常信息,若何安排 SDO 承载非常信息的布局照样必要开拓职员花费必然光阴来斟酌的。这样一定会增添架构设计职员和开拓职员的事情量。然则这样的事情量的增添对付增添客户友好度,前进产品容错能力照样有积极感化的。

JCA Binding 和 Websphere Adapter 对 SCA 非常处置惩罚机制的实现

基于 SCA 1.0 规范对 SCA 非常处置惩罚机制的定义,JCA Binding 和 Websphere Adapter 6.1 版本对其进行了支持。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: