Skip to content

Commit

Permalink
数据库连接池有bonecp更换为alibaba的druid。监控地址(只允许本地访问):http://127.0.0.1:8180/jee…
Browse files Browse the repository at this point in the history
  • Loading branch information
think-gem committed Apr 19, 2013
1 parent 602752f commit f9753e6
Show file tree
Hide file tree
Showing 8 changed files with 65 additions and 71 deletions.
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ JeeSite 提供了常用工具进行封装,包括日志工具、缓存工具、
3、Database相关

* ORM Framework:Spring-Data-JPA 1.3、Hibernate 4.1。
* Connection Pool:BoneCP 0.7
* Connection Pool:Alibaba Druid 0.2。
* Bean Validation:Hibernate Validation 4.3。
* Cache:Ehcache 2.6。

Expand All @@ -65,16 +65,16 @@ JeeSite 提供了常用工具进行封装,包括日志工具、缓存工具、

##快速体验

### **地址体验(感谢刘杰提供):** <http://demo.jeesite.com:1234/jeesite>
### **在线体验(感谢刘杰提供):** <http://demo.jeesite.com:1234/jeesite>

### 快速运行
### 本地体验

1. 具备运行环境:JDK1.6、Maven3.0、MySql
1. 具备运行环境:JDK1.6、Maven3.0、MySql5
2. 修改src\main\resources\application.properties文件中的数据库设置参数。
3. 根据修改参数创建对应MySql数据库。
4. 运行bin\resresh-db\refresh-db.bat脚本,导入表结构及演示数据
5. 运行bin\jetty.bat,启动服务器(第一次运行,需要下载依赖jar包,请耐心等待)。
6. 最高管理员,用户名:thinkgem 密码:admin
4. 运行bin\resresh-db\refresh-db.bat脚本,即可导入表结构及演示数据
5. 运行bin\jetty.bat,启动Web服务器(第一次运行,需要下载依赖jar包,请耐心等待)。
6. 最高管理员账号,用户名:thinkgem 密码:admin

##更多文档

Expand Down
Binary file modified doc/JeeSite About.docx
Binary file not shown.
20 changes: 5 additions & 15 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<spring-data-jpa.version>1.3.0.RELEASE</spring-data-jpa.version>
<hibernate.version>4.1.10.Final</hibernate.version>
<hibernate-search.version>4.2.0.Final</hibernate-search.version>
<bonecp.version>0.7.1.RELEASE</bonecp.version>
<druid.version>0.2.16</druid.version>
<sitemesh.version>2.4.2</sitemesh.version>
<shiro.version>1.2.1</shiro.version>
<ehcache.version>2.6.5</ehcache.version>
Expand All @@ -32,9 +32,6 @@
<dozer.version>5.3.2</dozer.version>
<poi.version>3.9</poi.version>
<freemarker.version>2.3.19</freemarker.version>
<!-- <junit.version>4.11</junit.version>
<mockito.version>1.9.5</mockito.version>
<powermock.version>1.5</powermock.version> -->

<!-- Jdbc -->
<jdbc.driver.groupId>mysql</jdbc.driver.groupId>
Expand Down Expand Up @@ -231,17 +228,10 @@
</dependency>

<!-- connection pool -->
<dependency>
<groupId>com.jolbox</groupId>
<artifactId>bonecp</artifactId>
<version>${bonecp.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.jolbox</groupId>
<artifactId>bonecp-provider</artifactId>
<version>${bonecp.version}</version>
<scope>runtime</scope>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>

<!-- jdbc driver -->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
/**
* 字典Service
* @author ThinkGem
* @version 2013-01-15
* @version 2013-04-19
*/
@Service
@Transactional(readOnly = true)
Expand All @@ -51,7 +51,7 @@ public Page<Dict> find(Page<Dict> page, Dict dict) {
dc.add(Restrictions.like("desciption", "%"+dict.getDesciption()+"%"));
}
dc.add(Restrictions.eq("delFlag", Dict.DEL_FLAG_NORMAL));
dc.addOrder(Order.asc("type")).addOrder(Order.asc("sort"));
dc.addOrder(Order.asc("type")).addOrder(Order.asc("sort")).addOrder(Order.desc("id"));
return dictDao.find(page, dc);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
/**
* 系统管理,安全相关实体的管理类,包括用户、角色、菜单.
* @author ThinkGem
* @version 2013-3-15
* @version 2013-4-19
*/
@Service
@Transactional(readOnly = true)
Expand Down Expand Up @@ -98,7 +98,7 @@ public Page<User> findUser(Page<User> page, User user) {
}
dc.add(Restrictions.eq("delFlag", User.DEL_FLAG_NORMAL));
if (!StringUtils.isNotEmpty(page.getOrderBy())){
dc.addOrder(Order.asc("area.code")).addOrder(Order.asc("office.code"));
dc.addOrder(Order.asc("area.code")).addOrder(Order.asc("office.code")).addOrder(Order.desc("id"));
}
return userDao.find(page, dc);
}
Expand Down
8 changes: 2 additions & 6 deletions src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,9 @@ jdbc.password=123456
#jdbc.username=sa
#jdbc.password=

#log4jdbc driver
#jdbc.driver=net.sf.log4jdbc.DriverSpy
#jdbc.url=jdbc:log4jdbc:h2:file:~/.h2/jeesite;AUTO_SERVER=TRUE

#pool settings
pool.maxconn=20
pool.minconn=3
pool.minIdle=3
pool.maxActive=20

#============================#
#====== Global sttings ======#
Expand Down
72 changes: 33 additions & 39 deletions src/main/resources/applicationContext.xml
Original file line number Diff line number Diff line change
Expand Up @@ -71,47 +71,41 @@
<!-- Production 环境 -->
<beans profile="production">

<!-- 数据源配置, 使用 BoneCP 数据库连接池 -->
<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">
<!-- 数据库驱动类 -->
<property name="driverClass" value="${jdbc.driver}" />
<!-- 数据库连接地址 -->
<property name="jdbcUrl" value="${jdbc.url}" />
<!-- 数据库的用户名 -->
<!-- 数据源配置, 使用 BoneCP 数据库连接池 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<!-- 数据源驱动类可不写,Druid默认会自动根据URL识别DriverClass -->
<property name="driverClassName" value="${jdbc.driver}" />
<!-- 基本属性 url、user、password -->
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<!-- 数据库的密码 -->
<property name="password" value="${jdbc.password}" />
<!-- 检查数据库连接池中空闲连接的间隔时间,单位是分,默认值:240,如果要取消则设置为0
<property name="idleConnectionTestPeriod" value="240" />-->
<!-- 连接池中未使用的链接最大存活时间,单位是分,默认值:60,如果要永远存活设置为0
<property name="idleMaxAge" value="60" />-->
<!-- 每个分区最大的连接数 -->
<property name="maxConnectionsPerPartition" value="${pool.maxconn}" />
<!-- 每个分区最小的连接数 -->
<property name="minConnectionsPerPartition" value="${pool.minconn}" />
<!-- 分区数 ,默认值2,最小1,推荐3-4,视应用而定-->
<property name="partitionCount" value="2" />
<!-- 每次去拿数据库连接的时候一次性要拿几个,默认值:2 -->
<property name="acquireIncrement" value="2" />
<!-- 缓存prepared statements的大小,默认值:0 -->
<property name="statementsCacheSize" value="0" />
<!-- 每个分区释放链接助理进程的数量,默认值:3,除非你的一个数据库连接的时间内做了很多工作,不然过多的助理进程会影响你的性能 -->
<property name="releaseHelperThreads" value="3" />
<!-- 其他不常用的属性:
connectionTestStatement:在做keep-alive的时候的SQL语句。
statementsCachedPerConnection:No of statements that can be cached per connection,反正源码中不推荐使用,就别用了.
initSQL:在每次到数据库取连接的时候执行的SQL语句,只执行一次。
closeConnectionWatch:如果设置为true,则会增加一个线程监控关闭连接时的情况,如果关闭时出现异常,则打出错误日志,主要用于debug。上线后记得关掉。
logStatementsEnabled:如果设置为true,就会打印执行的SQL语句,如果你用了其他能打印SQL语句的框架,那就不必了。
acquireRetryDelay:在获取连接失败后,第二次参试前的延迟时间,默认为7000毫秒。
acquireRetryAttempts:在获取连接失败后的重试次数,默认为5次。
lazyInit:如果设置为true,那么连接池不会自动创建最小连接数的链接,而是保持为空,直到有需求要获取连接。
transactionRecoveryEnabled:如果设置为true,则会保存该链接上的所有活动,以备下次重试的时候使用,这里指的活动是数据库操作。
connectionHookClassName:Connection hook class name.没看懂…
poolName:上面特性中说到的自定义连接池名称。
disableJMX:控制JMX的支持开关。
connectionTimeout:获取连接的时候最大的等待时间,默认值为:Long.MAX_VALUE
-->

<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="${pool.minIdle}" />
<property name="minIdle" value="${pool.minIdle}" />
<property name="maxActive" value="${pool.maxActive}" />

<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="60000" />

<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />

<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000" />

<property name="validationQuery" value="SELECT 'x'" />
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />

<!-- 打开PSCache,并且指定每个连接上PSCache的大小(Oracle使用)
<property name="poolPreparedStatements" value="true" />
<property name="maxPoolPreparedStatementPerConnectionSize" value="20" /> -->

<!-- 配置监控统计拦截的filters -->
<property name="filters" value="stat" />
</bean>

<!-- 数据源配置, 使用应用服务器的数据库连接池
Expand Down
14 changes: 14 additions & 0 deletions src/main/webapp/WEB-INF/web.xml
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,20 @@
<url-pattern>/</url-pattern>
</servlet-mapping>

<!-- DruidStatView -->
<servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
<init-param>
<param-name>allow</param-name>
<param-value>127.0.0.1</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<url-pattern>/druid/*</url-pattern>
</servlet-mapping>

<!-- CKFinder -->
<servlet>
<servlet-name>CKFinderConnectorServlet</servlet-name>
Expand Down

0 comments on commit f9753e6

Please sign in to comment.