项目中用JNDI方式配置了数据源。以前没怎么注意。今天自己看了下,挺简单的,使用servlet做了个小测试。
环境:tomcat7.0 jre6 mysql
1.mysql驱动程序添加到web项目的lib文件下。
2.META-INF下创建一个context.xml(也可以不写在这,在tomcat的server.xml下也可以,这里只放在自己项目下只供自己项目使用。)
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jdbc/test"
auth="Container"
type="javax.sql.DataSource"
username="root"
password="root"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/test"
maxActive="100"
maxIdle="30"
maxWait="5000"/>
</Context>
3.项目的web.xml中加入如下:
<resource-ref>
<description>MySQL DataSource</description>
<res-ref-name>jdbc/test </res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
4.就以上两步。下面配置好servlet。可以在servlet类中测试获取Connection对象。
关键代码:
Context initCtx = new InitialContext();
Object obj = initCtx.lookup("java:comp/env/jdbc/test");
// java:comp/env 是环境命名上下文
// 例如:dataSource = (DataSource)
// //ctx.lookup("java:comp/env/jdbc/DBPool");
// 它会从相应配置文件中加载名为"jdbc/DBPool"的对象
DataSource ds = (DataSource) obj; // 取得DataSource的引用,并保存在ds中
return ds.getConnection();
// 每次访问数据库都调用类自身的getConnection()方法,从DataSource的数据库连接池中取出//一个空闲状态的连接
通过测试。查询数据库表总的几条数据。没有问题。