达梦(DM)数据库创建 JDBC 数据源

MoMo 2021年6月14日18:27:32
评论
204

创建 JDBC 数据源

       JDBC   2.0               JDBC   2.0         

javax.sql.DataSource 接口来描述这个概念。如果用户希望建立一个数据库连接,通过查询在

JNDITM  服务中的数据源,可以从数据源中获取相应的数据库连接。这样用户就只需要提供

一个逻辑名称(Logic Name),而不是数据库登录的具体细节。

JNDITM 的全称是 Java  Naming  and Directory Interface  可以理解为 Java 名称和目录服

务接口。JNDI  向应用程序提供了一个查询和使用远程服务的机制。这些远程服务可以是任

何企业服务。对于 JDBC 应用程序来说,JNDI 提供的是数据库连接服务。JNDI 使应用程序

通过使用逻辑名称获取对象和对象提供的服务,从而使程序员可以避免使用与提供对象的机

构有关联的代码。

一个  DataSource  对象代表一个实际的数据源。在数据源中存储了所有建立数据库连接

的信息。系统管理员用一个逻辑名字对应  DataSource  对象,这个名字可以是任意的。在下

面的例子中 DataSource 对象的名字是 NativeDB。依照传统习惯, DataSource 对象的名字包含

 jdbc/下,所以这个数据源对象的完整名字是:jdbc/NativeDB

数据源的逻辑名字确定之后,就需要向 JNDI 服务注册该数据源。下面的代码展示了向

JNDI 服务注册数据源的过程。

//  初始化名称-目录服务环境

Context ctx = null;

try{

Hashtable env = new Hashtable (5);

env.put (Context.INITIAL_CONTEXT_FACTORY,

"com.sun.jndi.fscontext.RefFSContextFactory");

env.put (Context.PROVIDER_URL, "file:JNDI");

ctx = new InitialContext(env);

}

catch (NamingException ne)

{

ne.printStackTrace();

}

bind(ctx, "jdbc/NativeDB");

程序首先生成了一个   Context   实例。javax.naming.Context   接口定义了名称服务环境

(Naming  Context)及该环境支持的操作。名称服务环境实际上是由名称和对象间的相互映射

                                          (Context Factory)  

com.sun.jndi.fscontext.RefFSContextFactory(该类在 fscontext.jar 中可以找到,由于 fscontext.jar

中包含的不是标准的 API,用户需要从 www.javasoft.com 中的 JNDI 专区下载 fscontext.jar)

类,环境工厂的作用是生成名称服务环境的实例。javax.naming.spi.InitialContextFactory 接口

定义了环境工厂应该如何初始化名称服务环境(该接口在   providerutil.jar   中实现,由于

providerutil.jar 中包含的不是标准的 API,用户需要从 www.javasoft.com 中的 JNDI 专区下载

providerutil.jar)。在初始化名称服务环境时还需要定义环境的   URL。程序中使用的是

"file:JNDI",也就是把环境保存在本地硬盘的 JNDI 目录下。目前很多 J2EETM 应用服务器

都实现了自己的 JNDI 服务,用户可以选用这些服务包。

初始化了名称服务环境后,就可以把数据源实例注册到名称服务环境中。注册时调用

javax.naming.Context.bind()方法,参数为注册名称和注册对象。注册成功后,在  JNDI  目录

下会生成一个.binding 文件,该文件记录了当前名称-服务环境拥有的名称及对象。具体实现

如下例所示:

void bind (Context ctx, String ln)throws NamingException, SQLException

{

//  创建一个 DmdbDataSource 实例

DmdbDataSource dmds = new DmdbDataSource ();

//  把 DmdbDataSource 实例注册到 JNDI 中

ctx.bind (ln, dmds);

}

当需要在名称服务环境中查询一个对象时,需要调用  javax.naming.Context.lookup()

方法,并把查询到的对象显式转化为数据源对象。然后通过该数据源对象进行数据库操作。

DataSource ds = (DataSource) lookup (ctx, "jdbc/NativeDB");

Connection conn = ds.getConnection();

DataSource 对象中获得的 Connection 对象和用 DriverManager.getConnection 方法获得的

对象是等同的。由于 DataSource 方法具有很多优点,该方法成为获得连接的推荐方法。

https://xpanx.com/
MoMo
  • 本文由 发表于 2021年6月14日18:27:32
  • 转载请务必保留本文链接:https://xpanx.com/2953.html
飞书离职了怎么退出 飞书

飞书离职了怎么退出

一、功能简介 如果你是企业成员,当你被误拉入企业,或是从企业离职时,你可选择主动退出企业,也就是注销你在当前企业下的帐号。 注:退出企业后,你在该企业身份下所拥有的云文档等资源将自动流转给直属上级,无...
统信UOS怎么使用手机和电脑互传文件 统信UOS操作系统

统信UOS怎么使用手机和电脑互传文件

您可以使用统信UOS助手来实现手机与电脑间的跨端协作、高效传输以及实时同步。  说明:仅安卓手机支持安装统信UOS助手。 成功安装并登录统信UOS助手,设置好发现方式,通过扫码或搜索电脑将电脑与手机连...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: