级别: 初级 【程序编程相关:DB2 表为 Delphi 产生动态的数】
【推荐阅读:用 DB2、PHP 和 Linux 实现】 【扩展信息:支持的 JDBC 驱动程序】lance d bader
高级软件工程师, ibm corporation 2004 年 10 月 cloudscape™ 是用 java™ 实现的数据库管理器.而 tomcat 是用 java 实现的 servlet 基准容器.本文是一指导性手册,提供了在三种常见场景中一步步将它们进行集成的秘诀,这三种场景是:原型集成.临时集成与企业集成.概述
tomcat 是一个开放源代码的 java 2 enterprise edition(j2ee)servlet 容器,可以将它用作 java servlet与 javaserver pages 技术的基准实现.该实现准确.快速,而且易于使用,并且在有 apache 软件许可证的情况下是免费提供的.cloudscape 是一种占用资源少的.基于标准的.完全用 java 实现的数据库管理器.可以将之完全嵌入到任何 java 应用程序中,允许静默安装与使用单一管理作用域.与在单独的进程中运行的其他数据库管理器不同,嵌入式 cloudscape 与应用程序在同一 java 虚拟机中运行.这极大地减少了数据库的开销.而且它还支持复杂 sql.事务与 jdbc,不会破坏数据一致性,因此,当它增长到需要企业范围的容量时,您就能够将应用程序迁移到 ibm® db2® universal database™.
假定
这里所讨论的材料与技术都基于下列软件平台.windows xp professional,带有 2004 年 7 月 1 日之后的所有补丁包与更新(请参阅 http://www.microsoft.com/windows). java version 1.4.1(ibm windows 32 build cn1411-20030930)(请参阅 java">http://www.ibm.com/java,并搜索“ibm developer kits”). tomcat version 5.0.19(请参阅 http://jakarta.apache.org/tomcat/). cloudscape version 5.1.60.2(请参阅 http://www.ibm.com/software/data/cloudscape).
您可以将本文中的信息应用到其他操作系统与后续版本中,但是,平台的改变与产品的增强可能会使这些信息变得不正确或作废,并且这种可能总是存在.在将该信息应用到您的环境中时,请记住这一点.
可供选择的集成场景
有不止一种集成 cloudscape 与 tomcat 的方法.为了说明最有用的选择方案,我将它们收集为三种示例场景:原型(prototype)集成 如果您正为一个原型或概念验证(proof-of-concept)练习开发 web 应用程序,那么该场景可能就足够了.不需要修改 tomcat 的配置,所有一切都可以包含在 web 应用程序的档案文件(war)中. 临时(casual)集成 如果需要一个数据库管理器来实现 tomcat 的用户身份验证域,或者如果需要数据库管理器支持多个 web 应用程序,那么该场景更合适.在这个场景中,tomcat 配置中添加了一些 cloudscape jar 文件,一起添加的还有一个实现 tomcat lifecyleevent接口的类.当初始化与终止 tomcat 服务器时,该类将初始化与关闭 cloudscape. 企业集成 如果需要高效的连接池来同时支持多个用户,并且希望 web 应用程序独立于 jdbc url 规范与数据库名,那么您需要该场景.在这个场景中,tomcat 引用,并因此访问 cloudscape 安装目录中的整个 cloudscape 库.jndi data source 定义提供了高效的连接池.此外,需要启动 cloudscape 网络服务(network service),以便在 web 应用程序使用该数据库时,远程应用程序与管理工具可以访问它.
您通常会选择与您的情况最匹配的场景,并使用该场景中描述的备选方案.如果出于某种原因,该场景中只包含一个备选方案,但该方案被证明并不适合您,那么您可以检查其他场景,以获得更好的备选方案.
hellocloudscape.jsp
hellocloudscape.jsp 是一个极其简单的 javaserver page(jsp),用于验证 cloudscape 是否与 tomcat 正确集成.它是从 hello.jsp 扩展而来的,包含 tomcat 示例程序.为了匹配集成,在每个场景中,jsp 的实现都稍有不同.场景细节中解释了这些差异,但在所有情况下,hellocloudscape.jsp 都提供了一个 html 表单,用来获取创建连接以及执行 sql 命令所需的信息.
在原型(prototype)场景与临时(casual)场景中,表单中的第一个字段用来获得 cloudscape 数据库连接的统一资源定位符(universal resource locator,url),而第二个字段用来输入要执行的 sql 命令. 在企业场景中,表单中的第一个字段用来获得 jdbc 数据源的 jndi 资源名,而第二个字段用来输入要执行的 sql 命令.
提交表单时,会将请求送回 hellocloudscape.jsp, hellocloudscape.jsp 将
重新显示输入表单. 响应表单上提交的信息. 获取数据库连接. 执行提供的 sql 命令. 显示 sql 命令的结果.
如果该过程中抛出异常(exception),hellocloudscape.jsp 将尽力显示该异常消息与 java 堆栈跟踪.
注意:不要在生产 web 站点上安装 hellocloudscape.jsp.在将 web 应用程序部署到生产 web 站点之前,要确信已经从中删除了 hellocloudscape.jsp.hellocloudscape.jsp 将暴露敏感数据,因为攻击者可以用它来检查与修改您站点上的任何 cloudscape 数据库.
cloudscape 数据库连接 url 实例
java 数据库连接(jdbc)url 提供了用来指定与建立特定数据库连接的信息.对于嵌入式 cloudscape 系统,cloudscape jdbc 驱动程序的名称是 com.ibm.db2j.jdbc.db2jdriver,而且 url 具有以下形式.
jdbc:db2j: database[; attributes]
其中
jdbc 是所有 jdbc url 的标准前缀. db2j 是由 cloudscape jdbc 驱动程序进行解释的 url 的子协议标识符. database 将替换为引用 cloudscape 数据库的标识符,通常表示为到包含该数据库的目录的限定路径. attributes 是应用于连接的可选属性,由分号进行分隔.
这里有一些有用的实例.
jdbc:db2j:c:\cloudscape_5.1\demo\databases\toursdb 将建立到 cloudscape 提供的 tours样本数据库的连接,假定 cloudscape 已经安装在名为 c:\cloudscape_5.1 的目录中,这是 windows 平台上的默认安装目录.请注意,不要将 cloudscape 与 windows 驱动器符号或反斜杠分隔符混淆. jdbc:db2j:c:\temp\demo\newdatabase;create=true 将在目录 c:\temp\demo\newdatabase 中新建名为‘newdatabase’的数据库,并建立连接.如果有必要,还需要创建目录 temp 与 demo.如果无法创建数据库,就会抛出 sqlexception,表示无法找到该数据库.如果该数据库已经存在,就会建立连接并发出 sqlwarning. jdbc:db2j:c:\temp\demo\data;user=mary;password=contrary 将使用 mary作为用户标识符,使用 contrary作为口令,建立到名为‘data’的数据库的连接,该数据库位于目录 c:\temp\demo\data 中. ... 下一页