这是一个初级的笔记,我们利用 Tomcat 来配置数据源
前言
本篇将会简单讲解 Tomcat 数据源的配置,以及连接池配合数据源的实现连接数据库的方法。
准备前再了解些
自从有了 JNDI容器 频繁连接数据库也将不再变得麻烦,而我们可以通过 配置文件 的方式来快速连接数据库,甚至可以连接多个数据库。
那么如果开发中,数据库发生了改变,那么使用 JNBI容器 就能动态的进行变更,数据源的使用,就是JNDI 的思想。
我们可以在 tomcat 中创建 数据源,那么我们必须先安装配置好 Tomcat
(这里就不详细说了,但需要注意,将数据库的连接包jar,放到 tomcat 的
/lib/
之中,就不需要每次在项目中要导入这些包了)。
本篇我所使用的是 Tomcat 9.0 ,可能我不会去配置 web.xml ,在8.0以下的可能需要配置 web.xml ,我会简单提一下。
创建/配置 Context.xml
先说说 Context ——上下文,这个“上下文”解释不太好理解,那么可以简单的认为 Context 就是读取配置文件的一个载体,将配置文件读取后以某种格式存储起来, JDNI 的配置信息,就是利用Context 来获取的,可以在这里认为 是可以用来配置 JNDI容器的存在。
一般在 Tomcat 的安装目录中 /conf/
下会有 Context.xml
文件,此文件也是我们需要配置 的 数据源 的文件,也是 JNDI 的配置。
但Context的作用范围有三种:
- 全局 Tomcat 范围————
/conf/Context.xml
- locathost 范围 ————
/conf/Catalina/localhost/xxx.xml
(这个我目前没弄清楚) - webapp 范围 ———— 在项目中
webapp/META-INF/contxt.xml
根据自己的情况,创建不同的位置,这里我使用第三种方式配置。
Context 配置
在对应的配置文件中 按如下格式写入:
1 |
|
- 第一行的
<?xml version="1.0" encoding="UTF-8"?>
在第三种配置目录(webapp/META-INF/contxt.xml
)下是必填的。 - 注意由于是局部数据源,因此给
<Context>
加入path
属性,如:<Context path="/项目名">
- 其中 属性
name
填的内容,会是将来我们创建容器是,查找此配置的依据 - 与 数据库 连接相关的配置属性,一定要保证是正确的。
- 大体格式是 :
1
2
3<Context>
<Resource ... /> <!--属性就写在 ... 中-->
</Context>创建容器
配置文件创建完后,接下来就是创建 JNDI容器,并连接数据库了。
连接的代码是 (代码可以写在 jsp 或 java类 中都行)
1 | Context ctx = new InitialContext(); // 创建初始化 context |
需要导入的包有 :
java.sql.*
javax.sql.*
javax.naming.*
可以发现,其实前3行 就是 JNDI 的API ,而第四行是 JDBC 的连接。
其中 第二行 和 第三行 可以合并 写为
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/TestDS1");
应用可以通过这个初始化的Context经由这个目录树来定位它所需要的资源或对象。InitialContext在网页应用程序初始化时被设置,用来支持网页应用程序组件。所有的入口和资源都放在JNDI命名空间里的
java:comp/env
段里。
这样,就是实现了利用 数据源 连接数据库,剩下的操作就是 我们常用的数据库的操作。
总结
由于 数据源 更加简单,更加高效,在日常我们应该更多使用数据源的方式去连接数据库。
数据库用完后,记得将连接断开conn.close()
。