`
wt8414
  • 浏览: 44393 次
  • 性别: Icon_minigender_1
  • 来自: 合肥市
文章分类
社区版块
存档分类
最新评论

struts+spring+hibernate+proxool配置

阅读更多
基于ssh的proxool连接池配置
环境:MyEclipse5.5,win 2003,oracle,mysql
配置文件1:applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
	<bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource"><!-- 数据源类采用JDBC数据源 -->
		<property name="driverClassName">
		<!-- 将数据库连接交给了proxool管理,使它的驱动 -->	<value>org.logicalcobwebs.proxool.ProxoolDriver</value>
		</property>
		<property name="url">
                           <!-- 数据库连接池的别名,与你的proxool.xml中的Alias必须一致 -->
			<value>proxool.DbPool</value>
		</property>
	</bean>
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQLDialect
				</prop>
				<prop key="hibernate.connection.autocommit">true</prop>
				<prop key="hibernate.show_sql">true</prop>
                                    <!-- 
此处要注意因为proxool自己释放数据库连接比慢,所以要在此给出释放连接的模式,具体几种模式对应的意思,可以Google一下hibernate.connection.release_mode,有很多说明,在此不多说
 -->
				<prop key="hibernate.connection.release_mode">
					after_statement
				</prop>
			</props>
		</property>
		<property name="mappingResources">
			<list>
				<value>cn/wt/vo/Admin.hbm.xml</value>
				<value>cn/wt/vo/User.hbm.xml</value>
				<value>cn/wt/vo/Workdate.hbm.xml</value>
			</list>
		</property>
	</bean>
	<bean id="hibernateTemplate"
		class="org.springframework.orm.hibernate3.HibernateTemplate">
		<property name="sessionFactory">
			<ref bean="sessionFactory" />
		</property>
	</bean>
	<bean id="adminDao" class="cn.wt.dao.AdminDao" abstract="true" />
	<bean id="adminDaoImpl" class="cn.wt.dao.impl.AdminDaoImpl"
		parent="adminDao">
		<property name="hibernateTemplate">
			<ref bean="hibernateTemplate" />
		</property>
	</bean>
	<bean id="workDateDao" class="cn.wt.dao.WorkDateDao"
		abstract="true" />
	<bean id="workDateDaoImpl" class="cn.wt.dao.impl.WorkDateDaoImpl"
		parent="workDateDao">
		<property name="hibernateTemplate">
			<ref bean="hibernateTemplate" />
		</property>
	</bean>
	<bean id="userDao" class="cn.wt.dao.UserDao" abstract="true" />
	<bean id="userDaoImpl" class="cn.wt.dao.impl.UserDaoImpl" parent="userDao">
		<property name="hibernateTemplate">
			<ref bean="hibernateTemplate"/>
		</property>
	</bean>
	<bean name="/adminAction" class="cn.wt.struts.action.AdminAction">
		<property name="adminDao">
			<ref bean="adminDaoImpl" />
		</property>
	</bean>
	<bean name="/workdateAction"
		class="cn.wt.struts.action.WorkdateAction">
		<property name="workDateDao">
			<ref bean="workDateDaoImpl" />
		</property>
		<property name="userDao">
			<ref bean="userDaoImpl"/>
		</property>
	</bean>
</beans>

配置文件2:/WEB-INF/proxool.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- the proxool configuration can be embedded within your own application's.
Anything outside the "proxool" tag is ignored. -->
<something-else-entirely>
    <proxool>
        <alias>DbPool</alias> //与applicationContext.xml中url一致
        <driver-url>jdbc:mysql://localhost:3306/mysql</driver-url>
        <driver-class>com.mysql.jdbc.Driver</driver-class>
        <driver-properties>
            <property name="user" value="root" />
            <property name="password" value="123" />
            <property name="useUnicode" value="true" />
            <property name="characterEncoding" value="GBK" />
        </driver-properties>
        <minimum-connection-count>5</minimum-connection-count>
        <maximum-connection-count>50</maximum-connection-count>
        <maximum-active-time>60000</maximum-active-time>
        <house-keeping-test-sql>select 1</house-keeping-test-sql>
        <prototype-count>5</prototype-count>
        <house-keeping-sleep-time>60000</house-keeping-sleep-time>
    </proxool>
</something-else-entirely>

配置文件3:web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			/WEB-INF/classes/applicationContext.xml
		</param-value>
	</context-param>
	<servlet>
		<servlet-name>proxoolServletConfigurator</servlet-name>
		<servlet-class>
			org.logicalcobwebs.proxool.configuration.ServletConfigurator
		</servlet-class>
		<init-param>
			<param-name>xmlFile</param-name>
			<param-value>/WEB-INF/proxool.xml</param-value>
		</init-param>
                  <!-- 由于proxool要先加载,所以启动优先级要比spring高,否则在spring加载时会报错 -->
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet>
    <servlet-name>context</servlet-name>
    <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
  </servlet>
  <servlet>
           <!-- 数据库连接监控器 -->
	  <servlet-name>proxoolAdmin</servlet-name>
	  <servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>proxoolAdmin</servlet-name>
		<url-pattern>/proxoolAdmin</url-pattern>
	</servlet-mapping>
	<servlet>
		<servlet-name>action</servlet-name>
		<servlet-class>
			org.apache.struts.action.ActionServlet
		</servlet-class>
		<init-param>
			<param-name>config</param-name>
			<param-value>/WEB-INF/struts-config.xml</param-value>
		</init-param>
		<init-param>
			<param-name>debug</param-name>
			<param-value>3</param-value>
		</init-param>
		<init-param>
			<param-name>detail</param-name>
			<param-value>3</param-value>
		</init-param>
		<load-on-startup>0</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>action</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>

基本配置就这些,以前在根据网上所说的很多利用spring直接管理proxool的方法来实现,这种方法也可以,但有几点问题,1.mysql连接的URL:jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=GBK中间的&符号,在xml中使用&amp;来代替,但我在做测试时发现这样做不行,spring在启动时会报没有这样的驱动,还有些根本就是错误的估计是在网上转来转去,没经过测试就发表的.
关于连接释放,在applicationContext.xml中绝对有必要增加hibernate.connection.release_mode这一参数,而且比较的好的设置应该是after_statement,另一种是after_transaction,而使用after_statement优于after_transaction原因是避免了在一个事务结束后连接就释放,大家可以试一下先将这个参数去掉,运几次数据库操作,会发现产了生很多连接没有释放,大概大30秒至15秒之间可以释放有时会更长,然后在加上这个参数测试.

分享到:
评论
6 楼 cpeng202 2013-05-28  
我按照楼主的写法我也出了个编译时解析异常哇:
javax.servlet.ServletException: initDatabase exception when initializePool():Parsing failed.
at com.kenfor.util.initDatabase.init(initDatabase.java:179)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4421)


我在网上找了很久都没有找到解决这个问题的所在? 求大神点破.谢谢
5 楼 wt8414 2008-09-19  
lei101206 写道

按照上面的配置我出现了一个错误:&nbsp;&nbsp; Attempt to refer to a unregistered pool by its alias,在web.xml上我也配置了servlet,请问一下是怎么回事呢

检查一下web.xml中的<load-on-startup></load-on-startup>的值
proxool:<load-on-startup>1</load-on-startup>
spring:<load-on-startup>2</load-on-startup>
4 楼 wt8414 2008-09-19  
phong 写道

你的这个配置好像跟tomcat数据源配置差不多吧 数据源配置不一样而已,或者2者之间的性能或者别的什么存在差异吧 能说明下与其他的数据源配置体现了什么优势,又或者有上面劣势 谢谢。

你看一下网上对于dbcp,c3p0,proxool三者比较就知道了
3 楼 lei101206 2008-09-19  
按照上面的配置我出现了一个错误:
   Attempt to refer to a unregistered pool by its alias,
在web.xml上我也配置了servlet,请问一下是怎么回事呢
2 楼 phong 2008-09-17  
你的这个配置好像跟tomcat数据源配置差不多吧
数据源配置不一样而已,或者2者之间的性能或者别的什么存在差异吧
能说明下与其他的数据源配置体现了什么优势,又或者有上面劣势
谢谢。
1 楼 phong 2008-09-17  
&用&amp;代替是可以的啊 我试过了啊

相关推荐

    SSH (Struts2+Spring3+Hibernate3) +Proxool_亲测成功 费大劲了.zip

    文件`Spring3+Hibernate+Proxool_lj配置试验成功.txt`表明Spring3和Hibernate已经成功地集成了Proxool,这可能涉及到了Spring的`DataSource`配置,通过`&lt;bean&gt;`标签定义一个数据源,然后在Hibernate配置中引用它。...

    struts2.2.3+spring2.5.6+hibernate3.2+proxool0.9.1

    Struts2.2.3、Spring2.5.6、Hibernate3.2和Proxool0.9.1是四个重要的Java技术组件,它们在Web应用程序开发中扮演着关键角色。这个压缩包文件包含了这些技术的集成示例,旨在帮助开发者理解和实践如何将它们有效地...

    Spring+proxool+hibernate+struts2+aop_Jar包

    在"Spring+proxool+hibernate+struts2+aop"的整合中,Spring负责整体的依赖管理和事务控制,Struts2处理请求转发和视图展示,Hibernate处理数据库操作,而AOP则用来实现跨切面的关注点。 在提供的"Spring+proxool+...

    Spring+proxool+hibernate+struts2+aop整合的完整的简单项目

    **Spring+Proxool+Hibernate+Struts2+AOP整合详解** 在Java Web开发中,Spring、Proxool、Hibernate、Struts2和AOP(面向切面编程)是常用的框架和技术,它们各自承担着不同的职责,组合使用可以构建出高效、可维护...

    spring3+hibernate3+proxool+mysql 超级企业J2EE DEMO(jar在下一个文件中,jar太大了)

    本项目采用当前主流的MVC和IOC框架spring 3、优秀的ORM框架hibernate和超级厉害的proxool数据库连接池。这个工程demo,是本人在企业应用中的项目缩影,绝对实用于企业的应用。 适合朋友: 1.一直用单独的servlet和...

    Struts2 + Spring 2.5 + Hibernate 3.3 整合(实际使用项目,version1)

    proxool(据说是dbcp和c3p0三者中最优秀的)做连接池;使用jquery的ajax实现仿google人名自动补全;头像上传剪切压缩处理。 包含有完整的jar包和源代码,这是专门为我们实验室定制开发的,包含了架构基于s2sh技术...

    Struts2+spring+hibernate中的proxool连接池配置

    本文将详细介绍如何在Struts2+Spring+Hibernate的环境中配置Proxool连接池。 首先,理解Proxool的工作原理。Proxool是一个基于池化的JDBC代理,它维护着一个数据库连接池,当应用需要访问数据库时,可以从池中获取...

    Extjs3.2+struts2.0+spring2.5+hibernate3.5+weblogic10+oracle10g含全包4

    Extjs3.2+struts2.0+spring2.5+hibernate3.5+weblogic10+oracle10g 第4部分

    struts2+spring+hibernate整合

    在完成上述配置后,需要进行集成测试,确保请求能够正确地通过Struts2控制器,调用Spring管理的Service,再由Service调用Hibernate的DAO,最后正确地与数据库进行交互。 整合Struts2、Spring和Hibernate可以实现...

    Struts2 + Spring3 + Hibernate3.5 整合(集成测试配套jar包更新构建脚本使用说明)

    本版本全面更新了jar包,全部使用了当前最新版本的jar包,struct2.1.8 spring3 hibernate3.5,全面使用注解取代xm的l配置。 另外增加了一个ant构建脚本,支持使用hudson完成每日构建,持续集成,自动测试,代码规范...

    干净的struts2+spring+proxool架子

    struts2.2.1 spring2.5.6 proxool0.9.1 jstl1.2 说明:demo实现了最简单的取值,数据库操作。 没有使用hibernate和ibatis。自己写了个基类,包装了获取链接和释放链接。 从action返回后,使用了jstl获取action中的...

    Extjs3.2+struts2.0+spring2.5+hibernate3.5+weblogic10+oracle10g含全包5

    proxool_cofig.xml为连接池配置 此项目可做基础项目开发原型方便,启动此项目在weblogic10中会有antlr-2.7.6rc1.jar此包的异常请配置其先加载并将次包考入 bea\wlserver_10.0\server\lib目录下,再将bea\user_projects...

    Struts2 + Spring3 + Hibernate3.5 整合(实际使用项目,version2)

    本版本全面更新了jar包,全部使用了当前最新版本的jar包,struct2.1.8 spring3 hibernate3.5,全面使用注解取代xm的l配置。 另外增加了一个ant构建脚本,支持使用hudson完成每日构建,持续集成,自动测试,代码规范...

    Struts2 + Spring3 + Hibernate3.5 整合(实际使用项目,version3).part1

    本版本全面更新了jar包,全部使用了当前最新版本的jar包,struct2.1.8 spring3 hibernate3.5,全面使用注解取代xm的l配置。 另外增加了一个ant构建脚本,支持使用hudson完成每日构建,持续集成,自动测试,代码规范...

    spring3+hibernate3+proxool+jstl+oracle整合示例代码

    《Spring3+Hibernate3+Proxool+jstl+Oracle整合详解》 在现代Java Web开发中,集成各种框架以实现高效、灵活的应用程序已成为常态。本示例代码结合了Spring 3.0.4、Hibernate 3.5.0、Proxool 0.9.1、jstl,并利用...

    Struts2 + Spring3 + Hibernate3.5 整合(实际使用项目,version3).part3

    本版本全面更新了jar包,全部使用了当前最新版本的jar包,struct2.1.8 spring3 hibernate3.5,全面使用注解取代xm的l配置。 另外增加了一个ant构建脚本,支持使用hudson完成每日构建,持续集成,自动测试,代码规范...

    Struts2+Spring3+HibernateBBS源码lib2.rar

    Struts2+Spring3+HibernateBBS源码lib2.rar是一个经典的Java Web开发示例,它结合了三个流行的技术框架:Struts2、Spring3和Hibernate,用于构建一个基于论坛的Web应用程序。这个压缩包包含了运行该应用所需的核心库...

    struts2+hibernate3.2+spring2.5集成步骤

    在IT行业中,集成Struts2、Hibernate3.2和Spring2.5这三大框架是构建高效、可维护的企业级Web应用程序的常见选择。这三者分别负责MVC(Model-View-Controller)架构中的表现层、持久化层和业务逻辑层的管理。下面将...

    struts2+hibernate3.2+spring2.5集成方案

    【SSH集成】指的是将Struts2、Hibernate3.2和Spring2.5这三大主流Java Web框架进行整合,以构建高效、松耦合的企业级应用。这个集成方案旨在利用Struts2作为MVC(Model-View-Controller)框架处理前端请求,通过...

Global site tag (gtag.js) - Google Analytics