1.连接池
概念:就是事先取得一定数量的Connection,程序执行处理的时候不是新建Connection,而是取得预先准备好的Connection的使用权。
2、DataSource
提供连接池机能的技术叫DataSource。Javax.sql.DataSource包。 一般web服务器会提供。比如Tomcat5.5。DataSource可以通过new来取得,但通常是通过 JNDI 用 lookup 取得。
3、JNDI (Java Naming and Directory Interface,Java 命名和目录服务接口)
命名服务: 可以类比为Session属性的Map的高级版。实现指定名字对象的取得和登录。一般Web服务器会提供。在命名服务里登录的对象,可以用lookup()取得。
目录服务: 和命名服务类似,但是对象的管理是层次性的。
4、基于Tomcat利用DataSource
1)JDBC驱动配置
直接利用JDBC编程的话,JDBC驱动放在Web app的WEB-INF/lib下就可以了。
利用DataSource的话,JDBC需要放在app服务器的类目录下:<Tomcat安装目录>/lib
2)修改context.xml文件
在Tomcat登录DataSource有很多办法,在context.xml里追加<Resource>是最简单的。
文件: <Tomcat安装目录>/conf/context.xml和eclipse中server中的context.xml文件也需要修改,不然就会还原。
内容:
<Resource name="jdbc/myds" auth="Container" type="javax.sql.DataSource" username="briup" password="briup"
driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@127.0.0.1:1521:XE"
maxActive="20" maxIdle="20"/>
注意:
name:表示你的连接池的名称也就是你要访问连接池的地址
auth:是连接池管理权属性, Container表示容器管理
type:是对象的类型
driverClassName:是数据库驱动的名称
url:是数据库的地址
username:是登陆数据库的用户名
password:是登陆数据库的密码
一般把maxActive设置成可能的并发量就行了
maxActive、maxIdle和maxWait参数:
maxActive是最大激活连接数,这里取值为20,表示同时最多有20个数据库连接。
maxIdle是最大的空闲连接数,这里取值为20,表示即使没有数据库连接时依然可以保持20空闲的连接,而不被清除,随时处于待命状态。
MaxWait是指定数据库连接池中的数据库连接处于空闲状态的最长时间(以毫秒为单位)。超过这一时间将会抛出异常,取值为-1,表示可以无限制等待,直到超时为止,也可取值9000,表示9秒后超时。
3)使用DataSource
例子:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
**********
try{
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/名字");
Connection con = ds.getConnection();
*******
}catch(Exception e){
throw new ServletException(e);
}
}
概念:就是事先取得一定数量的Connection,程序执行处理的时候不是新建Connection,而是取得预先准备好的Connection的使用权。
2、DataSource
提供连接池机能的技术叫DataSource。Javax.sql.DataSource包。 一般web服务器会提供。比如Tomcat5.5。DataSource可以通过new来取得,但通常是通过 JNDI 用 lookup 取得。
3、JNDI (Java Naming and Directory Interface,Java 命名和目录服务接口)
命名服务: 可以类比为Session属性的Map的高级版。实现指定名字对象的取得和登录。一般Web服务器会提供。在命名服务里登录的对象,可以用lookup()取得。
目录服务: 和命名服务类似,但是对象的管理是层次性的。
4、基于Tomcat利用DataSource
1)JDBC驱动配置
直接利用JDBC编程的话,JDBC驱动放在Web app的WEB-INF/lib下就可以了。
利用DataSource的话,JDBC需要放在app服务器的类目录下:<Tomcat安装目录>/lib
2)修改context.xml文件
在Tomcat登录DataSource有很多办法,在context.xml里追加<Resource>是最简单的。
文件: <Tomcat安装目录>/conf/context.xml和eclipse中server中的context.xml文件也需要修改,不然就会还原。
内容:
<Resource name="jdbc/myds" auth="Container" type="javax.sql.DataSource" username="briup" password="briup"
driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@127.0.0.1:1521:XE"
maxActive="20" maxIdle="20"/>
注意:
name:表示你的连接池的名称也就是你要访问连接池的地址
auth:是连接池管理权属性, Container表示容器管理
type:是对象的类型
driverClassName:是数据库驱动的名称
url:是数据库的地址
username:是登陆数据库的用户名
password:是登陆数据库的密码
一般把maxActive设置成可能的并发量就行了
maxActive、maxIdle和maxWait参数:
maxActive是最大激活连接数,这里取值为20,表示同时最多有20个数据库连接。
maxIdle是最大的空闲连接数,这里取值为20,表示即使没有数据库连接时依然可以保持20空闲的连接,而不被清除,随时处于待命状态。
MaxWait是指定数据库连接池中的数据库连接处于空闲状态的最长时间(以毫秒为单位)。超过这一时间将会抛出异常,取值为-1,表示可以无限制等待,直到超时为止,也可取值9000,表示9秒后超时。
3)使用DataSource
例子:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
**********
try{
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/名字");
Connection con = ds.getConnection();
*******
}catch(Exception e){
throw new ServletException(e);
}
}