快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
   ctx.close();    } catch (Exception e) {      System.out.println("Could not look up datasource: " + e);    return;    } } // get connections private void getConn() {    System.out.println("> Jdbc2fed -- setting up connection");    try {      conn = ds.getConnection(user, pwd);      conn.setAutoCommit(true);      ...    } catch (Exception e) {      System.out.println("Error establishing connection: " + e);    return; }

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

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

通过本机数据访问来建立连接

当我们创建直接访问每个目标数据源的 servlet 时,我们要做更多的工作。当然,我 们必须为每个数据源建立连接。我们创建 DataSource 对象以支持到远程 DB2 UDB 和 Oracle 数据的合用连接。我们也创建了一个 DataSource 对象以支持到本地 DB2 Information Integrator 服务器的合用连接,我们仅用该服务器来存储到每个后端数据源 的查询返回的中间结果。这意味着,我们按照标准的 WebSphere Studio 开发过程总共创 建了三个 DataSource 对象。

不幸的是,我们不能为 Excel 电子表格创建 DataSource 对象。我们的 JDBC/ODBC 桥(它提供我们需要的 Excel 访问功能)不支持对该对象的创建。所以,我们的 servlet 回过来使用 JDBC 1.0 类型的连接(由用户管理的连接)来访问 Excel 数据。这使得我们 要在 servlet 中维护不同的数据库连接类型。这虽然不难,但是这确实需要一些额外的编 码和思考。

难怪我们的连接管理代码的大小增加了。现在我们要建立(并且在以后释放)四个连接 :三个合用连接和一个由用户管理的连接。只要可能,我们使用在数组上迭代的循环来压 缩代码库大小并改善以后的代码维护。

这里摘录了我们为一个 servlet(它是直接访问每个数据源的 servlet 之一)编写的 一些连接管理代码:

// connection data private static String[] dbname = new String[4]; private static String[] jndiname = new String[4]; private static String[] user = new String[4]; private static String[] pwd = new String[4]; private static String driver = ""; private static String url = ""; // connection objects private static DataSource[] ds = new DataSource[4]; private InitialContext ctx = null; private Connection[] conn = new Connection[4]; public void init() { // ---------------- local db2 (host for temp data) ----------    dbname[0]= "db2_loc";    jndiname[0] = "jdbc/db2loc";    user[0] = "db2admin";    pwd[0] = "db2admin";    ... // ------------------------- DB2 remote ---------------------    dbname[1]= "db2_rem";    jndiname[1]= "jdbc/db2rem";    user[1]= "demo";    pwd[1]= "db2pass";    ... // ------------------------ Oracle remote -------------------    dbname[2]= "ora_rem";    jndiname[2] = "jdbc/ora";    user[2]= "demo";    pwd[2]= "cdidemo"; // ------------------------ Excel local ---------------------- // (fall back to JDBC1 connection type as JDBC-ODBC bridge does // not support JDBC2 style connections)    dbname[3]= "xls_loc";    driver= "sun.jdbc.odbc.JdbcOdbcDriver&qu

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号