一个郁闷了我一个星期的问题(hibernate),谢谢,解决就给分,~~

ddwwyyll2002 2006-06-13 12:46:17
在用hibernate +struts做一个查询,数据库用的mysql
多次刷新一个查询页面后,就出先这个异常:
net.sf.hibernate.exception,JDBCConnectionException:Cannot open connection
at net.sf.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:66)
......



"Cannot open connection"
感觉是数据库没有关闭,最后导致连接数过多,最后无法打开连接,
但是我的session都是关闭了的
下面是部分代码片段:
.......
Transaction tx = null;
Session session1 = HbmSessionFactory.openSession();
try {
tx = session1.beginTransaction();
...
session1.save(obj);
tx.commit();
}
catch (HibernateException ex) {
ex.printStackTrace();
try {
tx.rollback();
}
catch (HibernateException ex1) {
ex1.printStackTrace();
}
}finally{
try {
session1.close();
}
catch (HibernateException ex2) {
ex2.printStackTrace();
}
}
....

请大家一起讨论~~
...全文
357 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghostv1 2006-06-14
  • 打赏
  • 举报
回复
你为什么不使用HbmSessionFactory提供的操作session的方法,例如currentSession()和closeSession(),你应该试试看。
ddwwyyll2002 2006-06-13
  • 打赏
  • 举报
回复
顶就给分
ddwwyyll2002 2006-06-13
  • 打赏
  • 举报
回复
自己先顶一下
tdtdtdtdtd123 2006-06-13
  • 打赏
  • 举报
回复
up
ddwwyyll2002 2006-06-13
  • 打赏
  • 举报
回复
session.close();
我使用的是它的自己close方法,应该没问题啊~~
eqxu 2006-06-13
  • 打赏
  • 举报
回复
SQLStateConverter.java:66
第66行是这个open么?


你将close放到finaly里就一定会执行,会不会使你的Session close的问题?
ddwwyyll2002 2006-06-13
  • 打赏
  • 举报
回复
不知道是不是需要每次调用了session后,
不要关闭连接呢
session.connection.close();
??
ddwwyyll2002 2006-06-13
  • 打赏
  • 举报
回复
HbmSessionFactory代码如下,是在网上找的,该了一下~~

package common;

import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.cfg.Configuration;
import net.sf.hibernate.*;

public class HbmSessionFactory {
public HbmSessionFactory() {
}


private static SessionFactory sessionFactory;
static {
try {
sessionFactory = new Configuration().configure().buildSessionFactory();
}
catch (HibernateException ex) {
ex.printStackTrace();
}
}

public static final ThreadLocal session = new ThreadLocal();
public static Session currentSession() throws HibernateException {
Session s = (Session) session.get();
if (s == null) {
s = sessionFactory.openSession();
session.set(s);
}
return s;
}

public static void closeSession() throws HibernateException {
Session s = (Session) session.get();
session.set(null);
if (s != null) {
s.close();
}
}
}
rickhunterchen 2006-06-13
  • 打赏
  • 举报
回复
检查你的HbmSessionFactory。
ddwwyyll2002 2006-06-13
  • 打赏
  • 举报
回复
在线等~~
sole_lodestar 2006-06-13
  • 打赏
  • 举报
回复
ding
ttaallkk1 2006-06-13
  • 打赏
  • 举报
回复
mark

67,549

社区成员

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

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