快速业务通道

跨多个数据源的J2EE开发: 细节探讨 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
' AS p_server   FROM db2_part UNION ALL   SELECT ora_part.*, ''ora'' AS p_server   FROM ora_part UNION ALL   SELECT odbc_part.*, ''xls'' AS p_server   FROM odbc_part;

如果您想要回顾作为我们系统配置工作的一部分而发出的 SQL 语句,请参阅 附录 A。 如果您觉得所有这些显得太繁复了,那么请您记住:您可以使用可生成所有这些 DDL 的 GUI。

跨多个数据源的J2EE开发: 细节探讨(3)

时间:2011-04-11 IBM C. M. Saracco

配置直接的数据访问环境

对于直接的数据访问,我们也需要安装适当的必备软 件。这些软件随所涉及的数据源的不同而不同,我们可以查阅特定于供应商的产品文档来 完成这些工作。

当连接能够正常工作时,我们创建本地 DB2 表来存储将从我们的 查询返回的中间结果。这些表随所涉及的查询的不同而不同。我们必须考虑计划如何分解 每个目标数据源的原始查询,并且确保我们创建的辅助表能够容纳返回的结果。我们总是 为每个查询创建至少一个辅助表(在某些情况下,我们创建多个辅助表)。在数据库管理 员和 J2EE 程序员合作并理解了该程序员的需求以后,很可能由数据库管理员来创建这些 对象。

在了解了您要在 DB2 中创建的表的结构以后,这个过程就简单了。我们选 择从命令行处理器发出 SQL 语句。以下是我们要创建的辅助表(它存放我们第一个查询的 中间结果)的一个例子:

create table temp_query1 (    p_partkey  integer,   p_name    varchar(55),   p_mfgr    char(25),   p_type    varchar(25))

如果您确实要了解每个 辅助表的定义,请参阅 附录 B。

管理连接

在试图发出查询以前,我们所 有的 servlet 需要建立到相应数据源的连接。只要可能,我们就使用 WebSphere 合用连 接(DataSource 对象),因为这些连接会改善系统的效率。已经证实,对于使用 DB2 Information Integrator 来访问数据的 servlet,我们可以方便地完成这些工作。对于直 接访问每个数据源的 servlet,我们发现只能使用 WebSphere 合用连接来访问我们的远程 DB2 Universal Database™(UDB)和 Oracle 数据源。对于我们的 Excel 数据,我 们必须依赖于由用户管理的连接(JDBC 1.0 类型的连接),等一下我们会讨论其原因。

通过 DB2 Information Integrator 建立连接

当使用 DB2 Information Integrator 时,我们的 servlet 只建立一个连接(连接到 DB2 Information Integrator 服务器)。只要这些 servlet 在查询中引用一个昵称(或 涉及昵称的一个视图),DB2 Information Integrator 就会自动地建立到不同数据源所需 要的连接以便能检索相应的数据。所有这些对我们是透明的。另外,因为 DB2 Information Integrator 对于 WebSphere Studio 就像是一个标准的 DB2 UDB V8 服务器 ,所以我们只需使用内置的向导定义一个 DataSource 对象。

这里是我们的一个 servlet(它是使用 DB2 Information Integrator 的 servlet 之 一)中的连接代码样本:

// set connection parameters private String jndiname = "jdbc/db2loc"; private String user = "db2admin"; private String pwd = "db2admin"; // connection variables ... private Connection conn = null; private InitialContext ctx = null; private DataSource ds = null; // look up data source.  This is called from the servlet''s "init" method. private void getDS() {    System.out.println("> Jdbc2fed -- looking up datasource");    try {      ctx = new InitialContext();      if(ds == null) ds = (DataSource)ctx.lookup(jndiname);

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号