用JNDI连接数据库
来源:互联网 发布:python培训课程 编辑:程序博客网 时间:2024/05/17 00:54
之前说到了利用Java中的Properties类读取properties配置文件,连接数据库,现在说另一种方法,他们的目的和作用都是一样的,都是为了提高代码的复用性,解决了更改数据库
时还要更改代码的麻烦。和之前的properties解决的问题一样这里就不说了,详见前一篇文章: Java读取properties文件连接数据库
jndi是什么?
JNDI(Java Naming and Directory Interface,Java命名和目录接口)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI服务供应接口(SPI)的实现。
我们能做的就是拿来直接用
这是Tomcat网站上给我们的提示,告诉我们怎么配置,还有一些模板:https://tomcat.apache.org/tomcat-7.0-doc/jndi-resources-howto.html
下面还是我的mail项目,在eclipse中用jndi连接数据库(获取数据库连接)执行操作
在eclipse中建的web项目会有WebContent目录,MyEclipse中是WebRoot目录,其实都是一样的,在目录下有META-INF文件夹,在里面新建context.xml输入以下内容
<?xml version="1.0" encoding="UTF-8"?> <Context> <Resource name="jdbc/mail" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="root" password="root" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/mail"/> <
- driverClassName - 要使用的JDBC驱动程序的完全限定的Java类名称。
- username- 要传递给我们的JDBC驱动程序的数据库用户名。
- password- 要传递给我们的JDBC驱动程序的数据库密码。
- url - 要传递给我们的JDBC驱动程序的连接URL。(为了向后兼容,该属性
driverName
也被识别。) - initialSize - 池初始化期间将在池中创建的初始连接数。默认值:0
- maxActive - 可以同时从此池分配的最大连接数。默认值:8
- minIdle - 同时在此池中闲置的最小连接数。默认值:0
- maxIdle - 可以同时在该池中闲置的最大连接数。默认值:8
- maxWait - 抛出异常之前要返回的连接的池将等待的最大毫秒数(当没有可用连接时)。默认值:-1(无限)
- name - 数据源名称,可以随便定义注意要和后面的web.xml文件中的一致
- auth - 这个官方也没有给出……没找到
<resource-ref> <description>DB Connection</description> <res-ref-name>jdbc/mail</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
里面的res-ref-name中的属性值要和之前的context.xml中的name是一致的,还有auth属性也要一致,这样才能找到。
直接把之前写的获取数据库连接的类改了
package util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;import javax.sql.DataSource;public class ConnectionManager {public static Connection getConnection() {Connection conn = null;try {// 初始化查找命名空间Context ctx = new InitialContext();// InitialContext ctx = new InitialContext();//也可以// 找到DataSource,对名称进行定位java:comp/env是固定的,后面跟的是在配置文件中定义的nameDataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/mail");//获取数据库连接conn = ds.getConnection();System.out.println("connection connected !");} catch (NamingException e) {System.out.println(e.getMessage());} catch (SQLException e) {e.printStackTrace();}return conn;}}
运行项目,得到connection connected !输出,查看数据库表中数据,添加成功。
阅读全文
0 0
- 用JNDI连接数据库
- 用JNDI连接数据库
- 为什么用JNDI连接数据库
- Ibatis+JNDI连接数据库
- jndi 连接数据库
- JNDI连接SQL数据库
- jndi连接数据库
- JNDI连接数据库
- JNDI连接数据库
- 使用JNDI 连接数据库
- JNDI连接数据库
- JNDI 连接数据库
- JNDI连接数据库
- JNDI连接数据库
- 使用JNDI连接数据库
- JNDI连接数据库
- jndi连接数据库
- 使用JNDI连接数据库
- 开发经验
- 新版 Windows 长这样:剖析微软全新设计语言 Fluent Design System
- 亚马逊IPO 20周年:市值4600亿美元的巨头是如何养成的?
- 软银证实:确实向滴滴出行投资了50亿美元
- html规范
- 用JNDI连接数据库
- 雪莱特·曼塔2017年新品见面会在京举行
- JS——文本框验证
- 狼人杀手游:一场有关技术、流量和资本的全面战争
- 坚果雅视C6今日天猫首发 开卖即爆款
- Nvidia推出视频分析平台Metropolis,让你化身未来城市中的“江湖百晓生” | GTC 2017
- Office办公套件要从Windows Store下载?Windows用户还会好吗
- 专访乐聚机器人冷晓琨:步态是人形机器人的核心
- OpenStack说的私有云2.0是什么?