视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
SSH2+proxool出现Nosuitabledriverfoundforproxool.mysqlP
2020-11-09 07:45:51 责编:小采
文档


首先我们要明确使用的是SSH2框架,然而Struts2是基于filter实现的那么在启动proxool的时候就不能够在用servlet来启动了! 于是我们就想到在初始化web容器的时候怎么让他一开始就加载呢? 我们查看tomcat的启动信息: Starting Servlet Engine: Apache Tomcat

首先我们要明确使用的是SSH2框架,然而Struts2是基于filter实现的那么在启动proxool的时候就不能够在用servlet来启动了!

于是我们就想到在初始化web容器的时候怎么让他一开始就加载呢?

我们查看tomcat的启动信息:

Starting Servlet Engine: Apache Tomcat/6.0.13
2012-6-10 15:31:41 org.apache.catalina.core.ApplicationContext log
信息: Initializing Spring root WebApplicationContext
2012-6-10 15:31:41 org.springframework.web.context.ContextLoader initWebApplicationContext
信息: Root WebApplicationContext: initialization started

最先启动的是spring容器,那么这样我们就可以将proxool的配置写在spring的配置文件中让它最先加载

如下:

	 
	
	
	
	
	
	
	
	
	 -->
 	

这样只需要在sessionFactory加上dataSource的引用即可如下:

 	
 	
 	
 	
 	
 

这样就不在需要配置proxool的servlet启动了,例如:

  
 ServletConfigurator 
  
 org.logicalcobwebs.proxool.configuration.ServletConfigurator 
  
  
 xmlFile 
 WEB-INF/classes/proxool.xml 
  
 1 
 
 
以上的配置就不在需要在web.xml中进行配置。
而在hibernate.cfg.xml中也不在需要proxool的配置只是配置一些hibernate的信息例如:
	true
	org.hibernate.dialect.MySQLDialect
和一些实体类的映射文件:
 
以上就将SSH2+PROXOOL的环境搭建好了。
 
但是在搭建好之后如果我们配置
 
 
又会提示如下错误:
Invalid property 'houseKeepingSleepTime' of bean class [org.logicalcobwebs.proxool.ProxoolDataSource]: Bean property 'houseKeepingSleepTime' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
大概意思是说'houseKeepingSleepTime'属性是不能够写的或者没有合适的setter方法。在他的参数setter和getter的返回结果类型不一致所导致的。
这个我想也正是他的bug吧。
那么具体解决如下:
在proxool-0.9.1.jar(我用的proxool架包)中找到org.logicalcobwebs.proxool.ProxoolDataSource将其源码修改如下:
 
源码是:
1./** 
2. * @see ConnectionPoolDefinitionIF#getHouseKeepingSleepTime 
3. */ 
4. public long getHouseKeepingSleepTime() { 
5. return houseKeepingSleepTime; 
6. } 
7. 
8. /** 
9. * @see ConnectionPoolDefinitionIF#getHouseKeepingSleepTime 
10. */ 
11. public void setHouseKeepingSleepTime(int houseKeepingSleepTime) { 
12. this.houseKeepingSleepTime = houseKeepingSleepTime; 
13. } 

 
修改为:
  1. /**
  2. * @see ConnectionPoolDefinitionIF#getHouseKeepingSleepTime
  3. */
  4. public long getHouseKeepingSleepTime() {
  5. return houseKeepingSleepTime;
  6. }
  7. /**
  8. * @see ConnectionPoolDefinitionIF#getHouseKeepingSleepTime
  9. *此处将int类型改为long类型
  10. */
  11. public void setHouseKeepingSleepTime(long houseKeepingSleepTime) {
  12. this.houseKeepingSleepTime = houseKeepingSleepTime;
  13. }
这样所有问题都解决!
以上所有步骤都是通过本人在网上查资料,自己手动配置而成。验证通过!
 
 
 
 




下载本文
显示全文
专题