spring中调用jndi访问tomcat中配置的mysql数据库连接池
上一阶段的学习和项目实践都未涉及到连接池的配置和调用,今天稍微了解了一下连接池的原理及配置使用的方法,在这里做一个简单的记录。
在做技术选型并确定解决方案的前期工作中,对于应用环境及不同技术类型的比较分析十分必要。这里就先简单阐述一下连接池的特点,主要为了说明“什么是连接池?”和“为什么使用连接池?”这两个基本问题。
1.在没有使用数据库连接池时,应用程序往往在需要访问数据库时建立数据库连接,应用程序(如web)往往需要在短时间内返回结果,建立数据库连接将耗费一定时间,将会影响应用程序的响应时间。
数据库连接池是在初始化时创建一定数量的数据库链接,并放入统一的容器中管理,当程序需要访问数据库是仅需要在连接池中取出一个Connection,而不是重新执行连接,这样节省了系统的响应时间。
2.数据库连接池设定了最小和最大连接数,由于建立数据库连接和访问数据库不仅需要消耗时间,而且需要占用CPU等系统资源,连接池通过保持一定数量的连接数保证多用户系统的正常运作的同时,限定了系统的最大连接数,使得系统不会因为高负载而出现一场。连接池通过对于数据库连接的管理,实现了对于系统资源的有效控制。
目前使用数据连接池有多种方式,如自主开发,使用第三方连接池(如C3P0)等。
下面就以spring通过jndi使用连接池为例,说明mysql数据库连接池的配置细节和过程
1.打开tomcat6安装目录下的conf文件夹,找到context.xml文件,在<context></context>中加入连接池资源:
<Resource name="jdbc/DBPool"
type="javax.sql.DataSource"
username="root"
password="root"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/test"
maxIdle="2"
maxWait="500"
maxActive="5"/>
其中name表示jndi的名称,应用时以“java:comp/env/jdbc/DBPool”调用
type表示Resource所属的java类
maxActive: 指定连接池中处于活动状态的数据库连接的最大数目
maxIdle: 指定连接池中处于空闲状态的数据库连接的最大数目
maxWait: 指定连接池中的连接处于空闲的最长时间
username: 数据库的用户名
password: 数据库的密码
driverClassName:数据库连接驱动类的名称
url: 数据库连接字符串
2.将数据库驱动包加入到tomcat的lib文件夹中
3.spring配置
<bean id="dataSource”
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName"
value="java:comp/env/jdbc/test">
</property>
</bean>
如果不是通过Spring使用连接池,也可用通过”java:comp/env/jdbc/test"查找到jndi。
完毕