sql server连接关闭遇到的问题?

BKscofild 2008-03-30 10:52:17
使用:
1。使用启动加载SERVLET,创建连接池。
2。使用自定义标签。
在标签中:DataSource,Connection为外部变量,在doInit中初始化DataSource,在doGet中初始化Connection。

出现问题:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Object has been closed.

问题描述:
刷新一个自定义标签JSP,前几次都能正常显示,大概4次左右后就会出现上述异常。

调试:
在自定义标签中,加入输出语句(System.out.println("Connection:"+conn)和System.out.println("Statement:"+stmt)),输出当前的连接和java.sql.Statement,在tomcat中看到每次输出的连接为同一个连接:org.apache.commons.dbcp.PoolableConnection@10df4e2,在执行Statement stmt=conn.createStatement();抛出异常:Object has been closed。
...全文
149 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fy_kenny 2008-03-31
  • 打赏
  • 举报
回复
提示 Object has been closed。就是对象关闭了。看你的情况应该是Statement对象关闭了。
如果你还要在某处使用这个Statement对象就要在使用完后,再进行关闭。请仔细检查你的代码。
BKscofild 2008-03-30
  • 打赏
  • 举报
回复
是在public int doStartTag()里定义的,如果为GET请求就调用方法doGet(),这个方法名是随便取的
awusoft 2008-03-30
  • 打赏
  • 举报
回复
自定义标签里有doGet啊?是不是JSP或者Serlvet里的啊?
BKscofild 2008-03-30
  • 打赏
  • 举报
回复
不是我不愿意,是代码很多,我来公司之前他们写的一个标签
具体是:2。使用自定义标签。
在标签中:DataSource,Connection为外部变量,在doInit中初始化DataSource,在doGet中初始化Connection。

conn=ds.getConnection();
System.out.println("得到连接:"+conn);
stmt = conn.createStatement();
System.out.println("创建statement:"+stmt);

后台输出为:
得到连接:org.apache.commons.dbcp.PoolableConnection@10df4e2
Service Error: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC
]Object has been closed.
(1712235 ms) [http-8080-Processor25] ERROR: org.tianhai.query.ConnectionPoxy#inv
oke : java.lang.reflect.InvocationTargetException



刷新页面,循环输出上面的结果
awusoft 2008-03-30
  • 打赏
  • 举报
回复
这是不可能的.
把代码放出来看看吧
BKscofild 2008-03-30
  • 打赏
  • 举报
回复
在标签中结束会关闭连接,为什么每次在标签中得到的连接为同一个连接?
还有我用两个JSP页面同时测试,结果两个JSP页面得到的连接也是同一个连接。
能告诉我为什么吗?

谢谢
pyantking 2008-03-30
  • 打赏
  • 举报
回复
conn=ds.getConnection(); 就出问题了
老紫竹 2008-03-30
  • 打赏
  • 举报
回复
在jsp标签里直接访问Connection本身就是错误的使用方法。

如果你没有权利改变这个现状,那就去请教原创人员吧。 你有同事啊,他们应该知道。

如果你能改变,放弃这种错误的做法吧!
awusoft 2008-03-30
  • 打赏
  • 举报
回复
不是很清楚你的东西了.帮不到了.

67,513

社区成员

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

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