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

和记娱h188下载app手机版:使用 WAS V6.1 SOA Feature Pack 开发 SCA 应用(下)



SCA 集成利用的开拓

下面我们经由过程别的一个示例来阐明 SOA Feature Pack 的其他紧张功能点,并且简单演示若何使用 SCA 开拓企业集成利用。一个银行系统供给给客户的办事可以包括帐户治理,存取款,转账,贷款等办事。这些办事有的是已有系统中存在的,有的是必要开拓新系统实现的,在 SOA 利用中每每必要对这些异构系统进行整合。运用 SCA 构架体系为这种类型的营业整合供给了强大年夜的支持和优越的封装性,并使开拓简单便利。

示例概述

在我们的示例中,供给四个银行账户办事:存款、查询余额、取款、转账。此中存款、查询余额以及取款由 EJB 实现的已有系统供给,转账为新开拓的办事,以 Web Service 的形式表现。下面先看 EJB 供给的功能:

清单 1 AccountEJB 的 Remote 接口

package ejbs;

/**

* Remote interface for Enterprise Bean: AccountEJB

*/

public interface AccountEJB extends javax.ejb.EJBObject {

/**

* @param accountId, ID of the customer's bank account

* @return the balance of the customer's account

* @throws java.rmi.RemoteException

*/

public double getBalance(String accountId) throws java.rmi.RemoteException;

/**

* @param accountId, ID of the customer's bank account

* @param amount, how much does the customer want to deposit

* @throws java.rmi.RemoteException

*/

public void deposit(String accountId, double amount)

throws java.rmi.RemoteException;

/**

* @param accountId, ID of the customer's bank account

* @param amount, how much does the customer want to withdraw

* @throws java.rmi.RemoteException

*/

public void withdraw(String accountId, double amount)

throws java.rmi.RemoteException;

}

AccountEJB 供给存款、查询余额以及取款的功能,其 Remote 接口定义如清单 1 所示。getBalance 为查询余额操作,它吸收银行受帐户 ID,返回帐户余额;deposit 为存款操作,它吸收帐户 ID 以及存款额度;withdraw 为取款操作,它吸收帐户 ID 以及取款额度。

下面定义转账办事的 Web Service,首先为转账操作的吸收的参数信息定义 XML Shcema – BankService.xsd,该 Schema 如清单 2 所示 AccountTransfer 为转账操作参数类型,它是一个 Complex Type,包孕三个属性,分手为滥觞帐户,目的帐户,以及转账额度。有了 Schema 后接着定义转账操作的 WSDL – BankService.wsdl,如清单 3 所示(未列出 service 以及 port),该 WSDL 定义了一个名为 BankService 的 portType,包孕一个操作 transfer,它吸收之前定义的 AccountTransfer 作为参数,返回 boolean 以表示转账是否成功。该 WSDL 以 document-literal-wrapper 要领定义。

清单 2 转账参数 Schema

至此,我们已经有了一个 EJB 供给的办事以及一个和记娱h188下载app手机版 Web Service 供给的办事,下面描述若何建立一个 SCA 利用来集成它们。

Java 天生

留意到在天生 Web Service 的时刻,定义了一个 XSD 的 Complex Type:AccountTransfer 作为 Web Service 操作的参数,在 SCA 实现的时刻,必要以 Java 的要领创建并且应用这个类型,是以必要和记娱h188下载app手机版一个由 XSD 到 Java 的转换。如文章上半部分中所述,这个功能是由 SOA Feature Pack 的 XSD2Java 对象供给的。此外在创建 SCA 实现的时刻,也必要有一个 Java 接口来表示 WSDL 里定义的 portType,是以必要一个 WSDL 到 Java 的转换,这个功能由 WSDL2Java 对象供给。下面演示如何在 RSA 中应用这两个对象:

在 Project Explorer 视图中右击 BankService.xsd,选择 Run As -> Run...,弹出运行设置设置设备摆设摆设对话框。

在左侧的运行类型树中,右击“Java Application”,选择 New,进入编辑 Java 运行启动项的设置设置设备摆设摆设界面。

在“Main”的设置设置设备摆设摆设页中(如图 1 所示),在 Main class 中搜索出 org.apache.tuscany.sdo.generate.XSD2JavaGenerator 类,该类是 XSD2Java 对象的进口。留意必须勾选“Include libraries when searching for a main class”的选项。(在工程树马上必须配好 SOA Feature Pack 的 classpath)。

图 1 XSD2Java 启动项设置设置设备摆设摆设

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

清单 4 BankService.wsdl 天生的 Java 接口

/**

* BankService.java

*

* This file was auto-generated from WSDL

* by the SOA Feature Pack WSDL to Java tool

*/

package sca.demo.bankservice;

import org.osoa.sca.annotations.Remotable;

/*

* BankService java interface

*/

@Remotable

public interface BankService {

/**

* Auto generated method signatures

*/

public boolean transfer(sca.demo.bank.service.AccountTransfer transfer);

}

至此,Java 天生的事情已经完成,下面可以使用天生的 Java 类进行 SCA 组件的开拓。

SCA 组件接口与实现

首先为必要建立的 SCA Component 定义接口,该接口集成了 AccountEJB 的功能以及 BankService 办事的功能,清单 5 为该接口的代码,留意必要应用 @Remotable 将接口声明生远程 SCA 接口。

清单 5 SCA 组件接口

package sca.demo.banksca;

@Remotable

public interface BankClient {

public double getBalance(String accountId);

public void deposit(String accountId, double amount);

public void withdraw(String accountId, double amount);

public boolean transfer(sca.demo.bank.service.AccountTransfer transfer);

}

SCA 组件支配

清单 7 给出了我们所必要创建的 SCA 组件的 Composite 定义,此中,我们创建了名为 BankDemoComponent 的 SCA component,并且应用了“SCA 组件接口与实现”节中给出的 Java 实现作为其 implementation,为 BankDemoComponent 创建了两个 Reference:采纳 EJB Binding 的 ejbReference 以及采纳 Web Service Bin和记娱h188下载app手机版ding 的 wsReference。此中有以下几点必要留意的地方:

因为在 SCA 组件中定义了 SDO,并且以 JavaBean 的形式应用,是以在 Composite 定义中必要声明 SDO 的工厂类。import.sdo 元素即为此声明的要领,它的名称空间为 http://tuscany.apache.org/xmlns/sca/databinding/sdo/1.0。factory 属性用来指定工厂类实现的全名。

在 EJB binding 中,接入点的描述为 corbaname:iiop:localhost:2809/NameServiceServerRoot#ejb/ejbs /AccountEJBHome,此中,localhost 为 EJB 所在的 J2EE 办事器地址,2809 为办事器的远程调用接口,ejb/ejbs/AccountEJBHome 为 EJB 的 JNDI 名称。

对付 Web Service Binding 的 Reference,既可以用 WSDL 形式的 interface 声明,也可以用 Java 形式,因为本例中应用 WSDL2Java 天生了对应的 Java 接口,该接口即可以用来声明此 Reference。

清单 7 SCA 组件 Composite 定义

|-------10--------20--------30--------40--------50--------60--------70--------80--------9|

|-------- XML error: The previous line is longer than the max o和记娱h188下载app手机版f 90 characters ---------|

|-------10--------20--------30--------40--------50--------60--------70--------80和记娱h188下载app手机版--------9|

|-------- XML error: The previous line is longer than the max of 90 characters ---------|

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

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