当前位置: 首页 > Linux学院 > 企业应用 > 数据库应用 > XPage访问关系型数据库的最佳实践

XPage访问关系型数据库的最佳实践

2014-01-22 15:45 来源:IBM 作者:梁骞 人气指数: 我要评论

我们在进行 XPages 应用开发的时候,有时一些事务性数据存在关系型数据库中,或者要集成其他系统中的数据,需要访问关系型数据库中的数据。XPages 本身是一个基于 Java 的服务器,所以它在访问关系型数据库时非常方便。

做 为一个 Java 的开发人员,我们完全可以直接在 XPages 中通过 JDBC 访问关系型数据库。为了我们更方便的访问关系型数据库,并且紧密的与 Xpages 的控件集成,XPages 扩展库(XPages Extension Library)提供了访问关系型数据库的插件。通过使用 Xpages 扩展库中关系数据库的功能,我们能够非常容易并且高效的访问关系型数据库,而且能够直接将关系型数据库中的数据直接在界面控件中进行展示。本文将主要介绍 如何使用 Xpages 扩展库来访问关系型数据库及最佳实践。

简介

XPages Extension Library(XPages 扩展库)是 XPages 开发团队开发和维护的一个扩展 XPages 功能的控件库。它不仅提供了一系列功能强大的界面控件,同时也提供一些 XPages 基础功能的增强,例如对关系型数据库访问,Rest 服务的访问,OAuth 认证等。XPages 扩展库开始作为一个开源项目发布在 OpenNTF.org 上,很快由于开发者对它的好评,Domino 9.0 已经将扩展库中的核心功能集成进来。

在 XPages 扩展库中,与关系型数据库访问相关的主要有两个插件:

com.ibm.xsp.extlibx.relational

com.ibm.xsp.extlibx.relational.derby

插 件 com.ibm.xsp.extlibx.relational 包含了所有关系型数据库访问的实现,com.ibm.xsp.extlibx.relational.derby 作为一个封装 JDBC 驱动程序的例子,其中打包了关系型数据库 Derby 的 JDBC 驱动程序。

在插件 com.ibm.xsp.extlibx.relational 中,它是直接使用 JDBC API 访问关系型数据库的,不需要与 NSF 数据库同步,所以它的效率极高。同时,它也实现了一个 JDBC 的连接池,所有与数据库的连接都可以使用连接池中的 JDBC 连接,这样可以大大提供数据库访问的效率。为方便界面控件展示关系型数据库中的内容,它也将 SQL 查询或者关系型数据库表封装成了 XPages 的数据源,这样我们展示关系型数据库中的内容和展现 Domino 数据库中的内容一样简单。它也提供了一组 Java 和 Javascript 的 API,我们可以直接在程序中使用这些 API 来访问 JDBC。下面我将一步步介绍其安装配置方法以及如何使用。

安装配置方法

我 们要使用扩展库中的关系型数据库访问功能,首先需要将 XPages 扩展库安装到 Designer 和 Domino 服务器上。安装方法非常简单,参见 XPages 扩展库文档。安装完扩展库后,我们需要安装 JDBC 的驱动程序,然后配置数据库连接。下面我们一一介绍。

JDBC 驱动程序安装方法

JDBC 驱动程序实际上是一个 Java 库,一般就是一个 Jar 文件,我们可以通过以下三种方式来安装到 Domino 服务器中:

  1. 标准 JDBC 安装方法(不推荐使用):将 JDBC 驱动程序 jar 文件放到 Domino 自带的 JAVA 虚拟机的 jvm/lib/ext 目录中;
  2. 将 JDBC 驱动程序 Jar 文件放到 NSF 数据库中(不推荐使用):这样每一个 NSF 数据库都将加载自己的 JDBC 驱动程序,如果多个 NSF 数据库都加载同样的 JDBC 驱动程序,可能会有冲突,另外这需要应用程序自己注册 JDBC 驱动程序;
  3. 将 JDBC 驱动程序封装为 OSGI 插件(推荐使用):这样可以自动注册 JDBC 驱动程序,不同数据库应用间可以共享 JDBC 驱动程序从而提高性能

下面我们介绍如何将一个 JDBC 驱动程序封装成为一个 OSGI 的插件以方便我们在 XPages 中使用:

  1. 首先使用 Designer 或者 Eclipse 创建一个 OSGI 的插件;
  2. 在插件的根目录中创建一个 plugin.xml 文件,并加入如下扩展点,将 JDBC 驱动程序的类名写入:
     <?xml version="1.0" encoding="UTF-8"?> 
     <plugin> 
       <extension point="com.ibm.commons.Extension"> 
             <service type="com.ibm.common.jdbcprovider" class="JDBC驱动程序类名" /> 
       </extension> 
     </plugin>
  3. 在插件中创建一个 lib 目录,将 JDBC 驱动程序的 Jar 文件拷贝到插件的 lib 目录;
  4. 修改 OSGI 插件的 META-INF/MENIFEST.MF 文件
    1. 修改文件中对应 Bundle-ClassPath 属性行,将 JDBC 驱动 Jar 文件加入插件 classpath: Bundle-ClassPath: ., lib/jdbc 驱动程序文件名.jar
    2. 修改文件中 Export-Package 属性,将 JDBC 驱动程序所用到的所有类名导出,以下以 derby 数据库为例:
       Export-Package: com.ibm.xsp.extlib.relational.derby,
       org.apache.derby.authentication, 
       org.apache.derby.catalog, 
       org.apache.derby.catalog.types, 
      …
    3. 修改文件中的 Require-bundle 属性,加入 JDBC 驱动程序运行所需要依赖的其他插件:Require-Bundle: com.ibm.commons.jdbc

这 样我们就可以将一个 JDBC 的驱动程序封装成为一个 OSGI 的插件。我们可以在 Designer 或 Eclipse 中将插件导出成一个 Jar 文件。需要使用时,我们只要将插件对应的 jar 文件拷贝到 Domino 的 data\domino\workspace\applications\eclipse\plugins 目录就可以了。

数据库连接设置

我 们连接关系型数据库时,我们需要指定连接的关系型数据库服务器,所用的驱动程序,用户名和密码等。在 XPages 扩展库的数据库访问插件中 , 可以通过 JDBC 连接文件来指定这些信息。XPages 扩展库中的数据库访问插件会读取 *.jdbc 的连接文件,然后创建相应的数据库连接以供应用程序使用。

我们可以将数据库连接文件 *.jdbc 放于不同位置,分别对应不同的作用域:

  • 全局 JDBC 连接:在 Domino/data/properties 文件夹中添加 *.jdbc 文件
  • NSF 数据库中 JDBC 连接:在数据库的目录 WebContent/WEB-INF/ 文件夹中添加文件夹 jdbc,然后在 jdbc 中添加 *.jdbc 文件

全局 JDBC 连接可以为 Domino 服务器上的所有应用所使用,而 NSF 数据库中的 JDBC 连接只能为单个 NSF 应用所使用。

JDBC 连接文件使用一种类似 XML 的格式,用于定于 JDBC 连接参数,如 JDBC URL, 数据库用户名、密码。数据库访问插件会读取这些 *.jdbc 的连接文件,解析其内容,创建连接池,并且将连接通过 JNDI 暴露出来,对应的 JNDI 的名字为:jdbc/{ 文件名 }。开发人员也可以直接通过 JNDI 的 API 来获取相应连接。连接文件中有四个属性可以设置:

  1. Driver:JDBC 驱动程序的类全名
  2. Url:JDBC URL,用于指定 JDBC 驱动类型和服务器地址等
  3. User:用于访问关系型数据库的用户名
  4. Password:用于访问关系型数据库的用户名对应密码

下面是一个样例 jdbc 连接文件,我们可以参照它来写自己的 JDBC 连接文件:

 <jdbc> 
	 <driver>org.apache.derby.jdbc.EmbeddedDriver</driver> 
	 <url>jdbc:derby:${rcp.data}\derby\XPagesJDBC;create=true</url> 
	 <user>phil</user> 
	 <password>phil</password> 
 </jdbc>

使用方法

一旦我们安装了 JDBC 驱动程序,并且配置好了数据库连接文件,我们就可以在应用中访问关系型数据库了。我们可以通过两种方式来访问:

  1. 在界面控件中使用 RDBMS 数据源
  2. 在 Java 或 Javascript 代码中使用 API

第一种方式可以让我们非常方便的在界面控件中展示关系型数据库中的数据,第二种方式更加灵活和强大,我们可以根据实际情况选用不同的使用方式。

为您推荐: 关系型数据库 XPage

其他类似的新闻

其他相关的新闻

大家感兴趣的内容
小伙伴最爱的新闻
小伙伴还关注了以下信息
小伙伴关注的焦点

小伙伴都在关注的热门词

新服 缤纷活动 航海世纪 芈月传 暗黑道具 萌乐网 苹果发布会 最新谍照 三国令 剑雨江湖 怎样修炼战骑 页游 怎样修炼伙伴 木甲世界 仙侠道2 推黑科技 页游模式 武圣试炼场 街机玩法 蓝月传奇 个人BOSS玩法 哥们网 九阴绝学 仗剑出鞘 全新模式 范伟打天下 全新元神玩法 七大神兵简介 新手攻略 跑腿任务 门派五行 城战礼包 页游界 泥石流 傅园慧 经典网页游戏 耐玩 盘点 玉石攻略 提升角色 大黑 实装属性 神兵攻略 问鼎莽荒 莽荒纪 手持神兵 土豪梦 万世 开学清单 财富赚不停 天书世界 大黑游戏 资源战场 ppwan 天问 激战 全国大战 雄霸一方 新增宠物技能 绝对小能手 花千骨 三尾章鱼 风色轨迹 双枪手 弑之神 缤纷好礼 惊喜六重连 帮会 中秋福利 自制月饼 九阴真经 玩家 五周年纪念 纪念银币 名动三界 新服资料片 画江山 勇战妖魔 邪恶势力 上古降魔 老司机玩法 坐骑揭秘 黑科技 竞技场攻略 铁血皇城 披风玩法 书剑恩仇录 装备强化攻略 野外BOSS玩法 全网曝光 赤壁传说 半回合制国 ACT 奇珍商城 热血战歌 传奇宝藏抽奖 打开方式 门徒 门徒获取玩法 三大萌宠简介