如何在数据库中断后继续存在?

时间:2015-11-15 18:34:01

标签: web-services database-connection c3p0

我有一个使用spring,hibernate和c3p0制作的Web服务。我还有一个服务范围的缓存(它具有对服务进行的请求的结果),当服务无法返回时(由于任何原因),它可用于返回结果。

时,缓存可能会在数据库输出时返回过时的结果。

我最近遇到了数据库中断,我的服务崩溃了。 我希望我的服务的客户能够在将来再次发生数据库中断。

为此,我需要我的服务:

  1. 处理这样的新传入请求:快速说数据库已关闭并抛出一些异常(快速失败)。

  2. 已处理的请求:持续时间不超过x秒。如何以某种方式中断处理请求的线程。

  3. 将整个数据库缓存在内存中以用于只读目的(这是疯了吗?)。

  4. 我做了一些观察:

    1. 如果有一个或多个状态为ESTABLISHED的连接,则不会尝试检出新连接。似乎任何一个状态为ESTABLISED的连接都被移交给接收请求的线程。现在,这个线程一直挂起,直到数据库重新启动为止 我想通过在处理与线程的连接之前知道db是否已启动来使此请求快速失败。如果不是,服务应该抛出异常而不是挂断。

    2. 如果状态ESTABLISHED没有连接,则请求会在10秒内失败,但“无法检出新连接”除外。这是因为我的结帐超时设置为10秒。

    3. 如果服务正在处理某个请求,那么现在db继续,然后服务调用db,调用db的线程将永远卡住。只有在db返回后它才会恢复执行 我想在x秒后打断线程是否能够完成请求。

    4. 有没有办法完成我所寻求的目标?

      提前致谢。

0 个答案:

没有答案