jndi(利用JNDI轻松验证连接数据库的方法)
一、JDBC与JNDI这两种连接方式有什么区别
这个.....
1,JNDI是指 Java Naming and Directory Interface,Java命名和目录接口,基于SPI实现,说白了,JNDI提供查找某一个服务(类)的能力。
2,JDBC是指 Java Data Base Connectivity,java数据库连接
3,二者同是Java标准/规范。没有多大关系。(不是没有关系)本来就是两样东西,谈不上什么区别。
4,通常服务容器把数据源,以JNDI方式提供给容器内的Java程序。也就是说,用户可以通过JNDI lookup到数据库的数据源,然后从数据源中取出连接(connection)。在通过JDBC(驱动)操作数据库。
二、浅谈如何配置jndi与jdbc两种数据源连接
使用JNDI就是不需要关心“具体的数据库后台是什么?JDBC驱动程序是什么?JDBC URL格式是什么?访问数据库的用户名和口令是什么?”等等这些问题。
不使用JNDI开发时,例如使用MySQL,要知道开发访问MySQL数据库的应用,于是将一个对 MySQL JDBC驱动程序类的引用进行了编码,并通过使用适当的 JDBC URL连接到数据库。
使用JNDI要在Web服务器中配置,例如Tomcat要在conf\context.xml中的<Resource>中配置数据源。具体怎么配置你可以百度搜索Java使用JNDI配置数据源。
JDBC配置数据源方式,和JNDI类似,就是将<Resource>中的配置自己在类中配置,要用到DBCP,需要3个jar包:
commons-collections4-4.0.jar
commons-dbcp-1.4.jar
commons-pool-1.6.jar
配置方法很简单:
BasicDataSourcedataSource=newBasicDataSource();
//设置驱动类
dataSource.setDriverClassName(className);
//连接字符串
dataSource.setUrl(url);
dataSource.setUsername(user);
dataSource.setPassword(password);
//初始化连接
dataSource.setInitialSize(initialSize);
//最大连接数量
dataSource.setMaxActive(maxActive);
//最大空闲连接
dataSource.setMaxIdle(maxIdle);
//超时等待时间以毫秒为单位6000毫秒/1000等于60秒
dataSource.setMaxWait(maxWait);
//得到连接
Connectioncon=dataSource.getConnection();
三、MyBatis 怎样使用JNDI连接数据库
JNDI是J2EE中一个很重要的标准,通常我们是在J2EE编程中用到,Tomcat中提供了在JSP和Servelt中直接使用JNDI的方法,主要是通过dbcp连接池
重点讲使用:
1.配置context.xml
注意地址是:tomcat安装目录下的conf,该目录下应该有了context.xml文件。貌似以前的版本是在项目目录中的META-INF目录下配置,我刚开始时参考是也是老版本的操作方法,谁知道试了一晚都不行。。。如果不是那里配置的话会可能出现这样的错误提示:javax.naming.NameNotFoundException: Name jdbc is not bound in this Context?
现在开始配置:
<Context path="/Manager" reloadable="true">
<Resource
name="hello"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
username="root"
password="123456"
maxIdle="4"
maxActive="4"