2011-02-14 61 views
0

我从java-hibernate应用程序中打开了一些Oracle会话。当关闭我的java-hibernate时,oracle会话保持打开状态,即使java进程没有被视为运行“ps -fea | grep java”。java hibernate oracle会话永远不会关闭

的问题是,这个预言会话从未死,他们留在那里,并杀死他们的唯一方法是手动杀Oracle进程,或重新启动Oracle实例或重新启动了Oracle所在的UNIX盒。

我的java/hibernate应用程序总是关闭会话并在源代码中包含最终语句,无论如何。

谢谢先进。

回答

2

没有更多的信息很难帮助你,但我可以猜到的东西。当您使用休眠打开或关闭会话时,您可能不打开真正的Oracle会话。 Hibernate可以在打开或不打开实际会话时使用池或控件。所以,你的问题不是在每个语句之后关闭你的java会话,而是在杀死你的应用程序之前正确关闭并完成hibernate的池或其他任何东西。

请发布更多信息,我不必猜测:)

+0

感谢您的帮助。 我使用C3P0作为连接管理器。使用的设置是非常标准的,我只能修改连接和超时数量: c3p0.initialPoolSize = 30 c3p0.minPoolSize = 30 c3p0.maxPoolSize = 70 c3p0.acquireIncrement = 1 #关闭连接池是#半小时以上未使用 c3p0.maxIdleTime = 1800 所以,我真的不会改变C3P0的功能。有一件有趣的事情是,我的应用程序通常部署在MySQL中,并且它始终正常工作,但Oracle有时会出现意外的行为。 – RGB 2011-02-14 16:18:07