Java程序中的数据源与JNDI
来源:互联网 发布:日本电视台网络直播 编辑:程序博客网 时间:2024/06/08 01:01
Java程序中的数据源与JNDI
JNDI 即Java 命名与目录接口(Java Naming and Directory Interface)
获取数据源最原始的方案
不用JNDI,我们完成一个带有数据库的工程,可能就要这么写
Connection conn=null;Class.forName("com.mysql.jdbc.Driver",Thread.currentThread().getContextClassLoader());conn=DriverManager.getConnection("jdbc:mysql://demo01?user=root&password=root");//对数据库的操作//..conn.close();
这种写法在修改数据库,修改账号密码时都需要重新修改代码。通常情况发布,开发,测试用的应该是不同的数据库。也就是说,当开发完程序以后,发布和开发并不是完全相同的版本。
使用配置文件
稍微好一点,可以把这些类似user
,password
之类的信息写到诸如xml,properties之类的配置文件中
user=rootpassword=root
然后在加载数据库的时候去解析配置文件
Map<String, String> properties = Properties.parse("datasource.properties");conn=DriverManager.getConnection("jdbc:mysql://demo01?user=" + properties.get("user") + "&password=" + properties.get("password"));
这样再发布的时候可以直接替换配置文件,不需要修改源代码。
另一种情况,比如在spring的bean配置中可以通过profile
来控制使用那个数据源。
<bean name='mysqlDataSource' profile='dev'> <props>...</props></bean><bean name='orclDataSource' profile='QA'> <props>...</props></bean>
在编译和发布的时候控制当前的profile属于开发或者是测试,以选择不同的数据源。
使用JNDI
我们在开发测试和过程中可能使用的是不同的环境(也许是同样版本的tomcat,但开发测试可能在两台电脑上),那为什么我们不把数据源直接配置在开发和测试的服务器上。
比如在开发的tomcat上配置(为了看起来方便,删去了一些配置)
<Resource name="jdbc/MySQL" auth="Container" type="javax.sql.DataSource" username="dev_li" password="dev" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.101.4:3306/demo" removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"/>
在测试的tomcat上配置
<Resource name="jdbc/MySQL" auth="Container" type="javax.sql.DataSource" username="qa_li" password="qa" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://44.130.16.128:3306/qa01" removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"/>
两者的name都一样,在项目中只要通过相同的name就可以获取数据源。
这种配置的方式使用的就是所谓的JNDI。
在Java代码中,我们大概可以通过:
Context ctx = new InitialContext();Object datasourceRef = ctx.lookup("java/MySQL"); DataSource ds = (Datasource)datasourceRef;conn = ds.getConnection();
去获取数据源,而关键的ctx.lookup("java/MySQL")
加载JNDI的方式。
程序中的JNDI
在程序中,我们可以通过naming包获取当前环境下的JNDI
import javax.naming.Context;import javax.naming.InitialContext;Context ctx = new InitialContext();Object obj = ctx.lookup("JNDI的名称"); 接口X demo = (接口X)obj;
接下来就可以通过接口X使用JNDI
阅读全文
0 0
- Java程序中的数据源与JNDI
- JAVA配置JNDI数据源
- java 使用JNDI数据源
- JNDI数据源介绍与配置
- Java通过JNDI获取数据源
- java通过JNDI获取数据源
- java获取Weblogic JNDI数据源
- java通过JNDI连接数据源
- [JAVA] 配置Tomcat JNDI数据源
- JNDI在tomcat中的应用:配置数据源
- jndi数据源
- jndi 数据源
- JNDI数据源
- 数据源-JNDI
- 数据库连接池,数据源,数据库连接,JNDI,JAVA
- 数据库连接池,数据源,数据库连接,JNDI,JAVA
- 数据库连接池,数据源,数据库连接,JNDI,JAVA
- java 数据源配置 JNDI读取方法
-  |"|&|<|>等html字符转义
- 洛谷P1280 尼克的任务(dp)
- noteBook2.14-C#基础第十四天
- JDBC小入门
- TensorFlow学习-- 变量Variables/ Fetch/ Feed
- Java程序中的数据源与JNDI
- 欢迎使用CSDN-markdown编辑器
- linux基础之文件权限和目录配置
- next_permutation(排列组合)函数的用法
- win8 下安装 ubantu16.04(双系统)+ ubantu无线上网
- Java访问权限
- 验证博客
- 大话数据结构 一
- Java之transient关键字详解