配置这类事,有了框架之后就简单多了。一直用hibernate,再“返璞归真”,又要重温一下。
顺便记录,供日后用到之际再做参考。
有两种方案:
一、局部数据源(在web应用中配置)
在Web应用META-INF目录下,建立context.xml文件,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<Context reloadable = "true">
<Resource
name="jdbc/sampleDB"
type="javax.sql.DataSource"
maxActive="40"
maxIdle="2"
username="root"
maxWait="5000"
driverClassName="com.mysql.jdbc.Driver"
password="111111"
url="jdbc:mysql://localhost:3306/bookstore"/>
</Context>
个别参数稍作说明:maxActive数据库连接池中维护的connection连接数;
maxIdle即空闲连接数,与网站的并发量有关,如果网站并发量峰值为100,建议该参数设置>100;
maxWait允许的等待连接数,与网站的负载有关,如某刻并发量为1000,连接池仅存100的连接数,将会有900的待连接,此时根据网站需求以及服务器的承载情况适当的调节。
//在业务逻辑代码中,使用jee框架提供的jndi技术,访问数据源。
使用javax.naming.Context接口的lookup()方法查找JNDI数据源Context context = new InitialContext();
DataSource ds = (DataSource)context.lookup(
"java:comp/env/jdbc/sampleDS");
lookup()方法的参数是数据源名字符串,加上“java:comp/env”固定前缀。得到了DataSource对象的引用后,就可以通过它的getConnection()方法获得数据库连接对象Connection:Connection conn=ds.getConnection();
二、全局数据源(在tomcat中配置)
全局数据源可被所有应用程序使用,在<CATALINA_HOME>/conf/server.xml文件的<GlobalNamingResources>中标签定义,定义后就可在任何的应用程序中使用。
假设我们要配置一个名为jdbc/bookstore的数据源,应该按下列步骤操作:
(1)首先在server.xml文件的<GlobalNamingResources>标签内增加下面代码:
<Resource
name="jdbc/bookstore"
type="javax.sql.DataSource"
maxActive="40"
maxIdle="2"
username="bookstore"
maxWait="5000"
driverClassName="org.postgresql.Driver"
password="bookstore"
url="jdbc:postgresql://localhost:5432/bookstore"
/>
(2)在Web应用程序中建立一个META-INF目录,在其中建立一个context.xml文件,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<Context reloadable="true">
<ResourceLink
global = "jdbc/bookstore"
name = "jdbc/sampleDS"
type = "javax.sql.DataSource"/>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
引用方式与方案一相同。