是这样的,我在后台用Java获取了建立在Weblogic上的数据源,并用它来连接别的数据库取数。
但是这数据库连接有超时的控制。隔一段时间不动(Inactive),再刷新,就会报错说连接已关闭。只有重启Weblogic服务才能从新连接上数据库。
目前我自己的解决方法是:在前台JSP页面上弄个自动刷新的控制,每10分钟就刷新一次页面,这样可以保持数据库连接一直是活动状态。
但是问题又来了:必须是开着浏览器开着页面,这段刷新的代码才会被执行。如果我关闭浏览器了,就不能自动刷新了。
这样的悲剧体现在:需要一直在服务器上开着一个网页负责刷新页面;如果重启服务器了,不但要开Weblogic的服务,同时也要再开一个页面来刷新网页……
如果可以在后台用Java刷新网页或者数据库连接,那就最好了。
请问各位大侠有什么高明的解决方法么?
[quote]请问实现方法是怎样的?麻烦您提示一下啊![/quote]
代码类似下面:
[code="java"]
class Task implements Runnable
{
@Override
public void run()
{
//要执行的任务,即刷新数据库
}
}
ScheduledExecutorService scheduledService = Executors.newScheduledThreadPool(1);
//每隔5秒执行一次任务
scheduledService.scheduleAtFixedRate(task, 0, 5, TimeUnit.SECONDS);
[/code]
不过我觉得你的问题不是要在后台开线程刷新连接,连接池都会
自己维护连接的,你是不是从连接池获取了一个Connection后
一直没有调用connection.close()方法释放连接到连接池中?
在后台启动一个线程,定时刷新不就可以了吗?
这是很艹蛋的想法,数据源不能定义超时时间么?一般的连接池都是可以定义连接多久没用就自动释放然后重新取
看看[url]http://hi.baidu.com/marsjin/blog/item/fd544ee71c81ee2cb838206f.html[/url]中的 非活动连接超时 有没有帮助
[quote]隔一段时间不动(Inactive),再刷新,就会报错说连接已关闭[/quote]这跟你的weblogic有什么关系啊?
你用 HttpClient 模仿 “在前台JSP页面上弄个自动刷新的控制” 这个功能,看看行不行?
[quote]调用了Weblogic上的连接,这连接会自动超时关闭。[/quote]
那也只是 weblogic 断开了你的连接啊,你干嘛要重启动 weblogic 呢?