阿里Druid连接池配置使用
2016-06-30 14:49
627 查看
项目中有用到数据库连接池技术,这次我们使用阿里公司的Druid连接池。Druid对数据库的监控做的很好,可以详细统计SQL执行的性能。
具体使用:如果是maven项目,加入如下依赖码到pom.xml文件中即可。
<span style="font-size:18px;"><span style="white-space:pre"> </span></span><pre name="code" class="html"><span style="white-space:pre"> </span><dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>版本自选</version> <span style="white-space:pre"> </span></dependency>
</pre>如果没有用到maven,则需要导包。在开源中国的项目中去下载和查看相关文档。http://www.oschina.net/p/druid<pre>
具体配置如下,这个配置基本能满足项目需要。
</pre><pre name="code" class="html"><span style="font-size:18px;"><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="url" value="jdbc:oracle:thin:@ip:1521:服务名" /> <property name="username" value="用户名" /> <property name="password" value="密码" /> <!-- 配置初始化大小、最小、最大 --> <property name="initialSize" value="10" /> <property name="minIdle" value="30" /> <property name="maxActive" value="300" /> <!-- 配置获取连接等待超时的时间 --> <property name="maxWait" value="3600000" /> <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> <property name="timeBetweenEvictionRunsMillis" value="60000" /> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> <property name="minEvictableIdleTimeMillis" value="30000" /> <property name="validationQuery" value="SELECT 'x' FROM dual" /> <property name="testWhileIdle" value="true" /> <property name="testOnBorrow" value="false" /> <property name="testOnReturn" value="false" /> <!-- 打开PSCache,并且指定每个连接上PSCache的大小 --> <property name="poolPreparedStatements" value="true" /> <property name="maxPoolPreparedStatementPerConnectionSize" value="20" /> <!-- 配置监控统计拦截的filters --> <property name="filters" value="stat"></property> <!-- <property name="filters" value="log4j" /> <property name="proxyFilters"> <list> <ref bean="stat-filter" /> <ref bean="wall-filter" /> </list> </property> --> </bean> <!-- 如果需要将统计信息写入log,就进行下面的配置,并在web.xml中作相应配置--> <!-- 配置阿里云的sql注入检测 --> <bean id="wall-filter" class="com.alibaba.druid.wall.WallFilter"> 对被认为是攻击的SQL进行LOG.error输出 <property name="logViolation" value="true"/> 对被认为是攻击的SQL抛出SQLExcepton <property name="throwException" value="false" /> </bean> <!--配置阿里云连接池状态监控--> <bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter"> 监控sql执行大于1s的sql <property name="slowSqlMillis" value="1000" /> <property name="logSlowSql" value="true" /> <property name="mergeSql" value="true" /> </bean></span>
<span style="font-size:18px;">以下是web.xml中<span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25.2px;">内置监控界面的配置:</span></span>
<span style="font-size:18px;"><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25.2px;"></span></span><pre name="code" class="html"><servlet> <servlet-name>DruidStatView</servlet-name> <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>DruidStatView</servlet-name> <url-pattern>/druid/*</url-pattern> </servlet-mapping>
<span style="font-size:18px;"><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25.2px;"> </span></span>大致配置就是这样,在项目启动后,输入:http://[ip]:[端口]/[项目名(看具体路径)]/druid/index.html
就可以打开Druid的监控界面。