- 浏览: 213732 次
- 性别:
- 来自: sdf
文章分类
最新评论
-
scd01234:
可以运行了,感谢师兄的慈悲加护!阿弥陀佛
基于eclipse swt做java浏览器内嵌等功能 -
seeyoula:
11
ie8 iframe支持问题 -
poorzerg:
很好,可以跑..谢谢了,我参考下..
基于eclipse swt做java浏览器内嵌等功能 -
landy8530:
验证网址那个方法,我直接输入sjkdasj这样的字符串返回也是 ...
js数据验证、js email验证、js url验证、js长度验证、js数字验证等 -
青春的、脚步:
表示运行不了 怎么回事 一模一样哦
mysql循环插入数据
网上很多朋友讲到了hibernate怎么用proxool
单独的怎么配置proxool,却很少把struts2和spring2还有hibernate整合起来的.花了一天的时候,才把配置整成功,分享出来给大家,希望可以少走弯路吧.
这里和大家讲一下,为什么要用tomcat来启动数据库连接池.除了资源控制一块,还有一个很大的原因是因为struts2要求spring的加载方式为<listener>
而spring会整合hibernate,在实例化的时候,会去加载proxool数据链接池.
因为proxool的加载方式是通过<servlet>方式来的,加载顺序在<listener>之后,也就是spring的后面加载.这样加载会不成功.
所以proxool的加载只能是在spring之前加载.网上有一个网友把proxool的加载方式改成了 <listener> 放在spring之前加载,这样太麻烦了,还要改源码.
于是这个方式成本就最低了.
当然,也有网友提到
<prop key="hibernate.proxool.xml">proxool.xml</prop>
以上引用,我配置后,并没有作用.估计那位网友使用的版本和我的不同吧.反正我试了半天是没有成功.
tomcat/conf/context.xml 配置proxool.
加在
</Context>
元素的前面 proxool的配置元素,就不多讲了,网上有很多详细的介绍.这里给大家一个链接:http://wallimn.iteye.com/blog/486550
<Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource" factory="org.logicalcobwebs.proxool.ProxoolDataSource" proxool.alias="DBPool" user="root" password="root" delegateProperties="foo=bar" proxool.jndi-name="mysqljndi" proxool.driver-url="jdbc:mysql://127.0.0.1:3306/webgame?characterEncoding=utf-8" proxool.driver-class="com.mysql.jdbc.Driver" proxool.house-keeping-sleep-time="40000" proxool.house-keeping-test-sql="SELECT ''" proxool.maximum-connection-count="100" proxool.minimum-connection-count="20" proxool.maximum-connection-lifetime="18000000" proxool.simultaneous-build-throttle="20" proxool.recently-started-threshold="40000" proxool.overload-without-refusal-lifetime="50000" proxool.maximum-active-time="60000" proxool.verbose="true" proxool.trace="true" proxool.fatal-sql-exception="Fatal error" proxool.prototype-count="2" proxool.statistics-log-level="ERROR />
现在就不需要单独的来配置proxool.properies 和proxool.xml了.
记得把proxool-0.9.1.jar和proxool-cglib.jar包复制到tomcat/lib文件夹下,否则会报找不到
org.logicalcobwebs.proxool.ProxoolDataSource
错误.把包放到自己项目下的话,会报这个错,但是也可以运行的.
接下来是配置web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:log4j.properties</param-value> </context-param> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 加载数据连接池及监控数据连接池功能 --> <!-- 由于已经通过tomcat的jndi来加载了数据连接,所以这样里以不需要了 <servlet> <servlet-name>ServletConfigurator</servlet-name> <servlet-class> org.logicalcobwebs.proxool.configuration.ServletConfigurator </servlet-class> <init-param> <param-name>propertyFile</param-name> <param-value> WEB-INF\classes\proxool.properties </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> --> <servlet> <servlet-name>Admin</servlet-name> <servlet-class> org.logicalcobwebs.proxool.admin.servlet.AdminServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>Admin</servlet-name> <url-pattern>/proxool.admin</url-pattern> </servlet-mapping> <!-- 加载spring文件 --> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> </web-app>
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" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <import resource="classes/xml/spring/games.xml" /> <import resource="classes/xml/spring/blcx.xml" /> <!-- 使用tomcat jndi数据连接池 ,这里项目中的servlet就不用配置启动连接池了--> <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>java:comp/env/jdbc/mysql</value> </property> </bean> <!-- Hibernate设置 --> <!-- 会话工厂设置,读取Hibernate数据库配置信息 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> <prop key="hibernate.proxool.existing_pool">true</prop> <prop key="hibernate.format.sql">true</prop> <prop key="hibernate.show.sql">true</prop> </props> </property> <property name="mappingResources"> <list> <value>com/webgame/account/form/WebgameAccount.hbm.xml</value> <value>com/webgame/account/form/WebgameAccountIndex.hbm.xml</value> <value>com/webgame/pay/form/WebgameAccountFinancingLog.hbm.xml</value> <value>com/webgame/pay/form/WebgameCategoriesRate.hbm.xml</value> </list> </property> </bean> <!-- Spring设置 --> <!-- 会话模板 --> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean> <!-- 事务管理器 --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref local="sessionFactory" /> </property> </bean> <!-- 配置事务拦截器--> <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <!-- 事务拦截器bean 需要依赖注入一个事务管理器--> <property name="transactionManager"> <ref local="transactionManager" /> </property> <property name="transactionAttributes"> <!-- 下面定义事务传播属性--> <props> <prop key="save">PROPAGATION_REQUIRED</prop> <prop key="dele*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> <!--注入到dao类里--> <bean id="accountIndexDao" class="com.webgame.account.dao.impl.AccountIndexDao" p:hibernateTemplate-ref="hibernateTemplate" /> </beans>
以上配置基本解决了启动方面的问题.
使用:
package com.webgame.account.dao.impl; import java.sql.SQLException; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.log4j.Logger; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.criterion.Restrictions; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.webgame.account.dao.interfaces.IAccountDao; import com.webgame.account.form.AccountBean; /** * 类实现全局所有种类游戏的账号信息数据操作类 * * */ public class AccountDao extends HibernateDaoSupport implements IAccountDao{ private static final Logger logger = Logger.getLogger(AccountDao.class); /* * (non-Javadoc) * * @see com.webgame.accout.dao.interfaces.IAccountDao#getAccountBean(java.lang.String, * java.lang.String[]) */ public AccountBean getAccountBean(String sql) throws SQLException { AccountBean form = new AccountBean(); List list = getHibernateTemplate().find(sql); if (list.size() == 1) form = (AccountBean) list.get(0); return form; } /* * (non-Javadoc) * * @see com.webgame.account.dao.interfaces.IAccountDao#getAccountCount(java.lang.String) */ @Override public int getAccountCount(String sql) throws SQLException { int reInt = 0; List list = getHibernateTemplate().find(sql); reInt = list.size(); return reInt; } /* * (non-Javadoc) * * @see com.webgame.account.dao.interfaces.IAccountDao#getAccountList(java.lang.String) */ @SuppressWarnings("unchecked") @Override public List<AccountBean> getAccountList(String sql) throws SQLException { List<AccountBean> list = new ArrayList<AccountBean>(); list = getHibernateTemplate().find(sql); return list; } @Override public boolean checkAccountExist(final String property,final String value) { return (Boolean)getHibernateTemplate().execute(new HibernateCallback(){ @SuppressWarnings("unchecked") public Object doInHibernate(Session session) throws HibernateException, SQLException { List<AccountBean> list = session.createCriteria(AccountBean.class).add(Restrictions.eq(property, value)).list(); if(list != null && list.size() > 0 ) return true; else return false; } }); } @Override public AccountBean getAccountBeanByName(final String accountName) { return (AccountBean)getHibernateTemplate().execute(new HibernateCallback(){ public Object doInHibernate(Session session) throws HibernateException, SQLException { return session.createCriteria(AccountBean.class).add( Restrictions.eq("accountName", accountName)) .setMaxResults(1).uniqueResult(); } }); } public boolean saveAccount(AccountBean bean) throws SQLException { bean.setInTime(new Date()); getHibernateTemplate().save(bean); return true; } }
评论
引起这个错误的原因是proxool是一启动就要加载自动生成数据连接池里的,并且要在spring前面生成,而proxool默认是servlet加载的,而spring是listener加载的。listener的优先级高于servlet,所以会造成spring启动后,找不到proxool的数据连接,会出错。为了解决这个问题,我把proxool的加载放到了tomcat级别来加载了。在测试的时候发现,在win下tomcat在加载proxool,好像会在先加载proxool和相关的class文件,然后再来加载tomcat/lib下的jar包,造成了你说的这个错。但是我在测试使用的时候,一切都是正常的。所以,也没有在这个问题上做更多的纠结了,估计你要解决这个问题的话,得看一下tomcat的源码,为什么会在win下加载lib包的话,出问题了。
警告: Failed to register in JMX: javax.naming.NamingException: Could not create resource factory instance [Root exception is java.lang.ExceptionInInitializerError]
2010-1-9 10:59:56 org.apache.catalina.core.NamingContextListener addResource
警告: Failed to register in JMX: javax.naming.NamingException: Could not create resource factory instance [Root exception is java.lang.NoClassDefFoundError: Could not initialize class org.logicalcobwebs.proxool.ProxoolDataSource]
2010-1-9 10:59:56 org.apache.catalina.core.NamingContextListener addResource
警告: Failed to register in JMX: javax.naming.NamingException: Could not create resource factory instance [Root exception is java.lang.NoClassDefFoundError: Could not initialize class org.logicalcobwebs.proxool.ProxoolDataSource]
2010-1-9 10:59:56 org.apache.catalina.core.NamingContextListener addResource
警告: Failed to register in JMX: javax.naming.NamingException: Could not create resource factory instance [Root exception is java.lang.NoClassDefFoundError: Could not initialize class org.logicalcobwebs.proxool.ProxoolDataSource]
2010-1-9 10:59:56 org.apache.catalina.core.NamingContextListener addResource
警告: Failed to register in JMX: javax.naming.NamingException: Could not create resource factory instance [Root exception is java.lang.NoClassDefFoundError: Could not initialize class org.logicalcobwebs.proxool.ProxoolDataSource]
2010-1-9 10:59:56 org.apache.catalina.core.NamingContextListener addResource
警告: Failed to register in JMX: javax.naming.NamingException: Could not create resource factory instance [Root exception is java.lang.NoClassDefFoundError: Could not initialize class org.logicalcobwebs.proxool.ProxoolDataSource]
2010-1-9 10:59:56 org.apache.coyote.http11.Http11Protocol start
能帮忙解释下吗,谢谢
发表评论
-
struts.properties配置文件
2009-11-27 22:28 10262009-05-05 15:58 建议strut ... -
org.apache.jasper.JasperException: File "/struts-tags" not foundc
2009-11-27 22:27 43132009-05-24 17:20 struts2 子目录j ... -
struts2 配置proxool路径问题
2009-11-27 22:24 1237<servlet> &l ... -
spring2配置proxool连接池 jtds驱动 spring2 jdbcTemplate配置
2009-11-27 22:23 2196spring2+proxool 配置 String2+pro ... -
spring2配置 utf-8解决
2009-11-27 22:22 948spring2配置 utf-8解决 <filter&g ... -
Pager Tag Library和struts2出现pager.offset的ognl错误 以及关联Spring2错误
2009-11-27 22:18 1827在csdn上查到此错误的解决办法是1.新建一个Pager类 ... -
spring2保存数据返回id spring2 SqlUpdate操作
2009-11-27 22:18 901public int saveUser(UserForm us ... -
Spring updateByNamedParam方法使用 Spring保存数据返回id SqlUpdate类使用。
2009-11-27 22:17 1646前天写了一篇文章也是Spring保存数据返回id SqlUpd ...
相关推荐
Struts2.2.3、Spring2.5.6、Hibernate3.2和Proxool0.9.1是四个重要的Java技术组件,它们在Web应用程序开发中扮演着关键角色。这个压缩包文件包含了这些技术的集成示例,旨在帮助开发者理解和实践如何将它们有效地...
本篇文章将详细阐述如何在MyEclipse6.5环境下,通过Tomcat6.0服务器搭建基于Struts2、Hibernate3.2和Spring2.5框架的应用程序。 #### 一、创建项目 首先,在MyEclipse6.5中新建一个动态Web项目: 1. **打开...
【SSH集成】指的是将Struts2、Hibernate3.2和Spring2.5这三大主流Java Web框架进行整合,以构建高效、松耦合的企业级应用。这个集成方案旨在利用Struts2作为MVC(Model-View-Controller)框架处理前端请求,通过...
Struts2、Hibernate3.2和Spring2.5是经典的Java Web开发框架组合,它们的集成可以帮助开发者构建高效、模块化的应用程序。以下是这些组件的简要介绍和集成步骤: **Struts2** 是一个基于MVC(Model-View-Controller...
在构建企业级Java应用时,整合Struts2、Hibernate3.2和Spring2.5是一个常见的选择,因为这三个框架分别负责MVC模式的展现层、持久层管理和业务层的依赖注入。在这个过程中,使用Proxool作为数据库连接池能够有效地...
Spring2.5配置proxool连接池
配置好`proxoolconf.xml`文件后,我们需要在Spring的配置文件(如`applicationContext.xml`或`hibernate.cfg.xml`)中引用这个配置,将Proxool数据源与Hibernate整合: ```xml <bean id="dataSource" class="org....
Extjs3.2+struts2.0+spring2.5+hibernate3.5+weblogic10+oracle10g 第4部分
此项目整合了目前主流和最前源的web开发技术:采用ehcache实现二级缓存(包含查询缓存);用sf4j及logback(log4j的升级版)记录日志;proxool(据说是dbcp和c3p0三者中最优秀的)做连接池;使用jquery的ajax实现仿...
SSH2全注解整合是Java Web开发中一种高效且现代化的方法,它将Spring 2.5、Struts 2.1和Hibernate 3.3这三个流行框架的优势结合起来,以简化开发流程并提高代码的可维护性。在这个项目中,开发者通过使用注解,避免...
本文将详细介绍如何在Struts2+Spring+Hibernate的环境中配置Proxool连接池。 首先,理解Proxool的工作原理。Proxool是一个基于池化的JDBC代理,它维护着一个数据库连接池,当应用需要访问数据库时,可以从池中获取...
本项目采用Struts2、Hibernate3集成JPA2、Spring3和Proxool连接池的集成,对整体SSH框架的数据访问及网站效率都有较大的提升,本项目即时部署即可使用,既满足新手的学习,也对有深层研究的朋友有帮助。
struts2+spring2.5+hibernate3.2整合所需的所有jar包,并额外包含了dwr.jar、分页组件pager-taglib、绘图组件jfreechart.jar、Excel解析工具包jxl.jar、数据库连接池工具包proxool.jar
proxool_cofig.xml为连接池配置 此项目可做基础项目开发原型方便,启动此项目在weblogic10中会有antlr-2.7.6rc1.jar此包的异常请配置其先加载并将次包考入 bea\wlserver_10.0\server\lib目录下,再将bea\user_projects...