§1.1基本技术规范
◆数据交换平台服务器采用满足J2EE规范的应用服务器实现
◆数据交换平台包含的数据交换服务使用纯Java接口作为统一的抽象接口描述
◆数据交换平台包含的数据交换服务可以发布为多种形式,包括:EJB、Servlet、WebService等
◆数据交换平台的数据,使用XML格式进行表示
◆数据交换平台要求提供安全认证和授权访问机制,确保数据交换的安全
§1.2数据交换接口规范
数据交换平台中的数据交换接口,统一通过纯Java接口来进行表述,对这类Java接口,要求满足如下规范:
◆接口方法的参数和返回值要求实现序列化接口
◆接口方法的参数和返回值,如果是数据集合,统一通过Rowset结构来实现,每个数据集合参数,需要标明RowSet结构的名字
下面是一个数据交换接口的例子:
/**
*
* 接口: 客户基本信息查询
* 说明: 本接口提供对营销用点客户的基本信息查询功能
*/
public interface bo_cust_info {
/**
* 查询客户基本信息
* @param custId : 客户号
* @return : 包含客户信息的结果集,如果没有该客户数据,返回空的结果集
* 返回结果集名: epm/ar_cust_info
*/
public DSRowSet queryByCustId (String custId);
}
§1.3RowSet数据集合结构说明
数据交换过程中,由于数据格式的混乱,常常带来很多附加的工作,这些工作往往导致系统出现错误,或降低了系统的效率,所以,应当采用尽量简单、统一的数据格式。数据集是数据交换过程中经常会遇到的数据结构,例如,查询结果往往包含多行数据。结果集可以有很多种实现方式,数据交换平台中,统一使用称为RowSet的数据集结构。
通过如下的例子来说明RowSet的结构:
如上是RowSet的结构XML表示,可见,这个结构很容易理解,每个rowset节点描述一个数据集,每个row节点描述一个数据行,row节点下,每个子节点,描述一个数据列的值。
这里,需要注意rowset节点的名字属性,每个名字唯一定义一个数据集的元数据结构,这个结构称为RowSetDef,数据交换平台统一提供对这个名字的结构解释,下面是如上数据集的结构描述:
数据交换平台提供对RowSet数据集的解析API。
§1.4对MsgInfo数据结构的说明
MsgInfo是基于XML的描述接口参数和返回结果的数据结构
如下是一个MsgInfo的结构:
此结构中,根节点是msginfo,包含一个parameters节点和一个rowsets节点,parameters节点包含简单的变量参数,而rowsets包含多个RowSet数据集。
如下是一个请求参数的例子:
如下是相应的成功返回值:
数据交换平台提供对MsgInfo结构的解释API
§1.5WebService接口规范
WebService是不同技术平台下应用系统进行数据交换的最好的方案,尤其是.NET平台和J2EE平台环境间的数据交换。
在数据交换平台上通过webservice部署的接口服务,要求满足如下规范:
◆接口的方法只包含一个字符串类型的输入参数,这个参数是一个MsgInfo结构,具体的参数打包在MsgInfo中进行传递
◆接口的返回值也是一个字符串类型的参数,这个参数是一个MsgInfo结构,具体的返回数据打包在MsgInfo中,这个MsgInfo中,要求至少包含一个参数returnCode,当returnCode = 0时,表示调用成功,否则,表示调用失败,如果具体的错误代码代表不同的含义,由接口自己设定;另外,MsgInfo中可以包含一个可选的returnMessage参数,描述错误的信息。
按照如上规范,前面bo_cust_info接口(在webservice中转换成BOCustInfo)的wsdl描述是:
数据交换平台对每个接口提供客户端API,便于客户端进行访问。
第2章数据交换客户端规范
§2.1WebService客户端
§2.1.1Java环境
如果客户端是Java环境,可以使用数据交换平台提供的数据交换服务接口客户端API来进行访问。
以BOCustInfo接口为例,客户端访问代码如下:
//BOCustInfoSoapBindingStub 是服务接口客户端API中的代理类
epm.ws.custinfo.BOCustInfoSoapBindingStub binding;
//设定访问地址
String address = "http://localhost:8080/epm/services/BOCustInfo";
//构造连接
try {
binding = (epm.ws.custinfo.BOCustInfoSoapBindingStub)
new epm.ws.custinfo.BOCustInfoServiceLocator().getBOCustInfo(new java.net.URL(address));
}
catch (javax.xml.rpc.ServiceException jre) {
if(jre.getLinkedCause()!=null)
jre.getLinkedCause().printStackTrace();
throw new Exception("JAX-RPC ServiceException caught: " + jre);
}
//创建参数
MsgInfo msg = new MsgInfo();
msg.setParameter("custId
//远程调用接口服务
String value = binding.queryByCustId(msg.getXMLString());
System.out.println("result is : " + value);
§2.1.2.Net客户端
.Net应用中(以C#代码为例),通过在工程中增加Web引用,可以方便的访问数据交换平台的接口服务。设增加的Web引用名称为:BOCustInfo,则访问代码示例如下:
BOCustInfo.BOCustInfoService service = new BOCustInfo.BOCustInfoService();
String address = "http://localhost:8080/epm/services/BOCustInfo";
service.Url = address;
String msgParam = "
String result = service.queryByCustId(msgParam);
为了便于访问,.Net客户端可以编写对MsgInfo和RowSet结构的解释类。
§2.2EJB客户端
EJB客户端指可以访问EJB的客户端应用,一般是Java环境。
数据交换平台对EJB客户端提供接口调用API,EJB客户端可以以一种纯Java接口的方式来调用数据交换服务,示例代码如下:
bo_cust_info bo = (bo_cust_info) BOUtil.getObject(bo_cust_info.class);
DSRowSet rs = bo.queryByCustId("0000669375");
System.out.println(rs.getXMLString());
所有远程调用的技术细节被BOUtil.getObject方法的实现屏蔽。客户端不必关心访问的物理链路,访问的具体信息配置在文件中。
第3章数据交换服务端规范
数据交换平台对数据交换服务端的技术要求如下:
◆服务端应用系统可以采用WebService,EJB, 或开放数据库的方式对数据交换平台提供数据服务
◆服务端应用系统应避免除数据交换平台之外的外部系统访问
◆服务端应用系统应提供标准的权限机制,保证数据访问的安全性
◆新开发的服务端应用系统,应采用与数据交换平台接口相似的技术规范,以便于数据服务接入数据交换平台下载本文