OGSA-DAI的JDBC驱动

OGSA-DAI:JDBC驱动,是OGSA-DAI网格中间件客户端工具的拓展项目,符合Sun JDBC接口v2.0规范,用以帮助开发者通过符合JDBC标准的Java代码与数据服务资源交互。

通常情况下,在DAI安装与数据服务资源部署之后,需要运行环境变量设置脚本setenv.sh加载依赖类库,即可以在命令提示符下,使用DAI自带的SQLClient客户端向服务转入SQL脚本并执行数据资源查询。查询时需要指定的参数包含:服务资源URL地址,数据资源ID(代表与哪个数据源建立连接),以及SQLQuery查询串。

但以命令行方式使用OGSA-DAI客户端,在与网格数据服务交互方面并不方便,OGSA-DQP提供了针对分布式查询的GUI客户端,帮助使用者添加查询计划,并生成OQL查询解析树。但如果计划将已有JDBC应用数据源迁移到DAI服务之上,使用OGSA-DAI:JDBC驱动则更灵活,开发者可以通过一般JDBC的处理方式,操作DAI上部署的各类数据服务,甚至可以使用Hibernate或JPA等ORM层,来构建DAI:JDBC之上的实体关系映射。

OGSA-DAI:JDBC驱动目前最新为0.1版本,在使用时首先需要加载JDBC Metadata Activity,来帮助DAI:JDBC获取后端关系型数据库的元数据信息。之后需要将MetaDataMethodActivity部署在OGSA-DAI中,并设置已有DAI Resource关联新部署的Activity。重启服务容器之后,在dai-manager.jsp监控页面中,就可以看见刚部署的Activity出现在DAI Resource下的行为列表中。

在OGSA-DAI:JDBC驱动编码方面,首先通过语句Class.forName(“br.usp.pcs.lahpc.ogsadai.jdbc.Driver”); 来告知JVM查找并加载指定的JDBC驱动类,之后通过DriverManager.getConnection(“jdbc:ogsadai://localhost:8080/wsrf/services/dai/datasource”); 语句指定访问服务的URL地址和数据资源名称,接下来便可以用JDBC的方式通过PreparedStatement来传入待执行的SQL串,调用execute()函数执行查询,并通过getResultSet()函数获取数据库查询后的结果集。

实际测试中,发现OGSA-DAI:JDBC驱动目前还存在一些问题,与作者邮件联系后确认:驱动对直接在Globus Container中部署的DAI服务支持良好,但如果Globus WS Core和DAI部署在Tomcat中,需要在添加DAI:JDBC依赖项的同时,添加一堆额外的DAI SQLClient运行库,才可以保证代码正常执行。目前版本还在不断修正之中,感兴趣的开发者可以关注OGSA-DAI:JDBC的后续版本。