ssh项目中spring配置的数据库连接池问题

sling2007 2011-03-07 03:41:20
ssh项目中,随着项目的启动spring会建立数据库连接池。

那么在这个系统运行起来之后,如果在别的地方又读取一遍spring、hibernate的配置,并且取session做些操作的话,
那么就会有2个连接池了呢??

如果要避免出现多个连接池,是不是只能把所有用hibernate的地方都配置在spring的bean中来获取?
...全文
964 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
youjianbo_han_87 2011-03-11
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 sling2007 的回复:]

谢谢 “长途跋涉”

我想应该还可以通过监视数据库的连接数量来测试
[/Quote]

这也是个办法,你在连接池里面配置最大连接数就开1个。数据库工具能监控到2个链接,那无疑是新开了连接池。
sling2007 2011-03-11
  • 打赏
  • 举报
回复
谢谢 “长途跋涉”

我想应该还可以通过监视数据库的连接数量来测试

youjianbo_han_87 2011-03-10
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 sling2007 的回复:]

引用 12 楼 asia_xu 的回复:

不会有两个连接池的,配置好了之后 hibernate.cfg.xml这个文件可以删掉,对其他的没影响


不要只说结果,能不能给点理由..............
[/Quote]

他说的估计是运行时。配置文件已经读到内存里面了,删掉估计没问题,没试过,但是就你这个例子,运行时,删掉了文件。你又手动去读取配置,生成Session实例,肯定会报配置文件找不到的错的。

他们还是没有说明为什么只有一个连接池。所以,还是照我上面的那个想法测试。关键点:你在生成连接池的地方监听下,连接池每次生成。都打印一句话到控制台,这样就知道,到底生成了几个连接池。
sling2007 2011-03-10
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 asia_xu 的回复:]

不会有两个连接池的,配置好了之后 hibernate.cfg.xml这个文件可以删掉,对其他的没影响
[/Quote]

不要只说结果,能不能给点理由..............
youjianbo_han_87 2011-03-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sling2007 的回复:]

引用 5 楼 youjianbo_han_87 的回复:

1. 系统运行起来了,还有其他非本工程里面的人,会读取配置?或者你在本工程里面里面,在手动写类似在junit测试里面获取bean实例那样的语句。


对,的确是在工程中使用了类似junit测试中获取bean实例那样的语句
[/Quote]

那试试6楼的办法把。
许亚洲 2011-03-09
  • 打赏
  • 举报
回复
不会有两个连接池的,配置好了之后 hibernate.cfg.xml这个文件可以删掉,对其他的没影响
sling2007 2011-03-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 youjianbo_han_87 的回复:]

还有个简单的办法,你将连接池的最大连接数设置为1个链接。然后开一个页面,调用这个数据库连接。然后开另外一个页面,调用你手动读取配置,生成连接的代码。如果这个页面报取不到链接的异常,那证明用的是同一个连接池,如果还能正常操作数据库,那证明有2个连接池了。
[/Quote]

英明,我这样测试的的确是另开了一个连接池.........................
youjianbo_han_87 2011-03-09
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 shu723 的回复:]

6楼的错了,不会有两个边接池的。
只会只有一个边接池。
[/Quote]

6楼只是提供一个测试方向,何错只有啊。。。。。。。。。。
EvenShu 2011-03-09
  • 打赏
  • 举报
回复
6楼的错了,不会有两个边接池的。
只会只有一个边接池。
youjianbo_han_87 2011-03-08
  • 打赏
  • 举报
回复
还有个简单的办法,你将连接池的最大连接数设置为1个链接。然后开一个页面,调用这个数据库连接。然后开另外一个页面,调用你手动读取配置,生成连接的代码。如果这个页面报取不到链接的异常,那证明用的是同一个连接池,如果还能正常操作数据库,那证明有2个连接池了。
youjianbo_han_87 2011-03-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sling2007 的回复:]

一楼二楼说的,不是我所问的。

我问的是会不会有两个连接池............
[/Quote]

1. 系统运行起来了,还有其他非本工程里面的人,会读取配置?或者你在本工程里面里面,在手动写类似在junit测试里面获取bean实例那样的语句。

2. 如果会,还真没试过,这个估计你把spring和hibernate的源码包挂进去跟踪调试,或者在spring里面配个aop,监测连接池初始化。
sling2007 2011-03-08
  • 打赏
  • 举报
回复
一楼二楼说的,不是我所问的。

我问的是会不会有两个连接池............
sling2007 2011-03-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 youjianbo_han_87 的回复:]

1. 系统运行起来了,还有其他非本工程里面的人,会读取配置?或者你在本工程里面里面,在手动写类似在junit测试里面获取bean实例那样的语句。
[/Quote]

对,的确是在工程中使用了类似junit测试中获取bean实例那样的语句
yingzhuo2011 2011-03-07
  • 打赏
  • 举报
回复
没错,hibernate除了配置一下方言和sql日志之类的,其他都不用管了。

applicationContext.xml

<beans>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="hibernate.cfg.xml" />
</bean>

<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
</beans>

kerioz 2011-03-07
  • 打赏
  • 举报
回复
hibernate配置连接池和数据缓存麻烦
你把sessionfactory和数据链接交给spring就够了
项目启动 容器加载 并读取配置文件 不需要你去管

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧