如何配置和使用 OC4J 10g (10.1.3) 数据源

最初发布时间:2004 年 11 月 1 日
最后更新时间:2006 年 1 月 16 日
作者:Frances Zhao

简介

本演示展示了如何配置 OC4J 的托管数据源和原生数据源,并用 JSP 代码测试了与已配置数据源的连接。

OC4J 10.1.3 提供了简化的数据源分类,只有两种类型的数据源:托管和原生。托管数据源是由 OC4J 管理的数据源。托管数据源是 OC4J 提供的 java.sql.DataSource 接口实现,充当 JDBC 驱动程序或数据源的包装。

托管数据源与原生数据源的不同之处如下:

  • 从托管数据源检索的连接可以参与全局事务。
  • 托管数据源利用 OC4J 的连接池和语句缓存。
  • 从托管数据源返回的连接包装有 OC4J 连接代理。

原生数据源实现 java.sql.DataSource 接口,并且由 JDBC 驱动程序供应商提供。

前提条件

知识准备

  • 应熟悉以下技术:数据源、JSP;
  • 指向 OTN 上其他 OC4J 方法文档的链接

软件要求

本演示要求安装并正确配置以下软件组件:

  • Oracle Containers for J2EE 10g (10.1.3) 单机版,并配置有一个 Web 站点(如 http-web-site)
  • Sun JDK 1.4_02 或更高版本,可以从 Sun 网站获得。
  • 任何 HTML 浏览器,如 Mozilla、Microsoft Internet Explorer、Netscape 等

符号

  • %ORACLE_HOME% — 安装 OC4J 的目录。
  • %JAVA_HOME% — 安装 JDK 的目录
  • %HOWTO_HOME% — 将此演示解压缩到的目录

构建应用程序

配置数据源

与以前的 OC4J 版本一样,OC4J 10.1.3 数据源仍然在应用程序的 data-sources.xml 文件中定义。所有应用程序的默认数据源配置文件仍然位于 %ORACLE_HOME%/j2ee/home/config/data-sources.xml 中。

要定义数据源,您可以直接编辑数据源配置文件,也可以使用企业管理器创建、删除和修改数据源。此方法文档仅说明了第一个方法。

定义连接池

托管数据源使用连接池有效地管理连接。如果使用托管数据源,则必须至少定义一个连接池。下面是该方法文档中的示例定义:

<connection-pool name="Pool Using DataSource Factory">
  <connection-factory
    factory-class="oracle.jdbc.pool.OracleDataSource"
    user="scott"
    password="tiger"
    url="jdbc:oracle:thin:@//dbhost:1521/dbservicename">
  </connection-factory>
</connection-pool>

连接池元素包含一个唯一标识该连接池的名称属性。连接池使用连接工厂(由连接工厂元素定义)获得数据库的物理连接。

连接工厂元素包含 JDBC 驱动程序用于连接到数据库的 URL,以及可用于获取数据库连接的默认用户和密码。工厂类属性定义 JDBC 驱动程序提供的实现类,该实现类用于获取连接。实现类必须是 java.sql.Driver、javax.sql.DataSource、javax.sql.XADataSource 或 javax.sql.ConnectionPoolDataSource 的一个实现。

定义托管数据源

至少定义了一个连接池以后,您就可以定义托管数据源了。以下是本方法文档中的托管数据源示例,它使用了上面定义的连接池:

<managed-data-source
  name="OracleManagedDS2"
  connection-pool-name="Pool Using DataSource Factory"
  jndi-name="jdbc/OracleManagedDS2"/>

name 属性唯一标识托管数据源。jndi-name 属性定义该数据源将放置在 JNDI 中的位置。connection-pool-name 属性标识该托管数据源将与之交互以获得连接的连接池。

定义原生数据源

原生数据源没有连接池依赖性。下面是一个原生数据源示例:

<native-data-source
  name="OracleNativeDS"
  jndi-name="jdbc/OracleNativeDS"
  description="Native DataSource"
  data-source-class="oracle.jdbc.pool.OracleDataSource"
  user="scott"
  password="tiger"
  url="jdbc:oracle:thin:@//dbhost:1521/dbservicename">
</native-data-source>

name 属性唯一标识原生数据源。jndi-name 属性定义该数据源将放置在 JNDI 中的位置。data-source-class 定义原生数据源的实现类,并且必须是 javax.sql.DataSource 的一个实现。user 和 password 属性定义默认用户和密码。url 属性定义数据源用于与数据库进行通信的 url。

使用已配置的数据源

一旦数据源配置完毕,您仍然以与先前 OC4J 版本中相同的方式使用它们。以下是此方法文档的 JSP 代码中的示例:

InitialContext ic = new InitialContext();
DataSource nativeDS =
  (DataSource) ic.lookup("jdbc/OracleNativeDS");
Connection nativeDSConn = nativeDS.getConnection();

该应用程序的其他信息

为此方法文档配置了四个数据源。请参阅随附的 %HOWTO_HOME%/etc/data-sources.xml 以获得详细信息。

  • 原生数据源:使用 Oracle JDBC 数据源
  • 托管数据源:使用带有 XADataSource 连接工厂的连接池
  • 托管数据源:使用带有 DataSource 连接工厂的连接池
  • 托管数据源:使用带有 Driver 连接工厂的连接池

 

运行应用程序

以下说明适用于在 Oracle Containers for J2EE 10g (10.1.3) 的独立实例上运行本演示。

检查方法文档分发

  • build — 编译过程中创建的临时目录
  • log — 保存构建/部署日志的临时目录
  • etc — 封装此应用程序的所有必要文件
  • lib — 保存可以部署的应用程序存档(如 ear、war、rar 或 jar 文件)
  • doc — 方法文档和 Javadoc
    • javadoc — 不同源文件的 javadoc
    • how-to-datasource.html - 此方法文档页面
  • src — 演示程序的源代码
    • web — 包含 HTML 页面和 JSP 代码

设置应用程序

环境配置

请检查以确保 ant-oracle.properties 文件(位于该示例分发的根目录下)中的以下属性配置正确(注意:其中某些属性将是下述环境变量的默认值。如果您在环境中设置这些变量,可能不必改变文件中的值)。如果必要,则针对您的环境将这些变量修改为适当的值:

  • oracle.home — Oracle 安装的根目录。默认值为 ORACLE_HOME 环境变量。
  • java.home — JDK 安装的根目录。默认值为 JAVA_HOME 环境变量。
  • oracleas.host — 运行 OC4J 实例的平台的主机名。默认值为 localhost。
  • oracleas.http.port — OC4J HTTP 监听程序进行监听时所使用的端口。默认值为 8888
  • oracleas.admin.port  — OC4J 管理处理器进行监听时所使用的端口。默认值为 23791
  • oracleas.admin.user — OC4J 管理员的名称。默认值为“ oc4jadmin”。
  • oracleas.admin.password — OC4J 管理员的口令。默认值为“ welcome”。
  • oracleas.binding.module — 已部署应用程序绑定到的 HTTP Web 站点的名称。默认值为“ default-web-site”。
%ORACLE_HOME%/ant/bin

为被管理的 OracleAS 实例配置环境

g
  • oracleas.http.port — Oracle HTTP Server (OHS) 监听时所使用的端口。
  • oracleas.admin.port — OPMN 请求端口(在 opmn.xml 中指定),其默认值为 6003。您还可以使用以下命令检查 OPMN 请求端口: %ORACLE_HOME%/opmn/bin/opmnctl status -port
  • oracleas.admin.user — OC4J 管理员的名称。默认值为“ oc4jadmin”。
  • oracleas.deployer.uri — 用于执行不同管理操作的 URI(部署,取消部署)。该文件包含不同的 URI,这取决于应用程序的拓扑:独立的 OC4J、被管理的单个节点或被管理的集群。您只需取消与您的拓扑匹配的 URI 的注释即可。
  • oracleas.oc4j.instance — 这是被管理的 OC4J 实例,其中将部署或取消部署应用程序。

数据库配置

该演示要求 Oracle 数据库和监听程序处于运行状态。记下所使用的主机名、端口号和服务名称 — 您需要使用这些信息修改 %HOWTO_HOME%/etc/data-sources.xml

启动 OC4J 实例

g
  • 独立安装: %ORACLE_HOME%/bin/oc4j start
    注意,该 oc4j 命令期望 JAVA_HOME 环境变量指向一个完整的 JDK 安装。

  • 受 OracleAS 管理的安装: %ORACLE_HOME%/opmn/bin/opmnctl startall

生成、编译和部署应用程序

构建脚本安装

确保在您的计算机上安装并正确配置了 Ant 1.6.2 或更高版本。在某些操作系统上,Ant 当前不支持使用环境变量。如果您使用的正好是这种操作系统,则要修改位于顶层 %HOWTO_HOME% 目录中的 common.xml 文件。

此外,请确保与 OC4J ant 分发关联的 ant 命令位于您的执行路径 ( %ORACLE_HOME%/ant/bin) 中。

构建应用程序

在顶层 %HOWTO_HOME% 目录中,键入命令:

  • ant

%HOWTO_HOME%/dist 目录中现在应包含新创建的 datasource_demo.ear

如果构建成功,此命令还将尝试部署此应用程序。它将首先测试 OC4J 是否正在运行。

部署应用程序

还可以使用以下命令分别部署应用程序。确保定义了 %ORACLE_HOME% 环境变量。在顶层 %HOWTO_HOME% 目录中,键入命令:

  • ant deploy

运行应用程序

在浏览器窗口中,浏览到:

如果网站的主机名或端口号不同,则用实际值替换。

对于每个数据源,单击关联的按钮会调用一个 JSP,以尝试从该数据源获取连接。将出现一个新页面指示是否成功获取连接,或者发生异常。新页面上应该有一个返回链接,可以将您转回到起始页。

总结

在本文档中,您了解了:

  • 了解 OC4J 数据源的新类型
  • 了解如何配置和使用每种类型的数据源

 

Left Curve
热门下载
Right Curve