首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >H2嵌入式模式与软件崩溃

H2嵌入式模式与软件崩溃
EN

Stack Overflow用户
提问于 2013-11-20 02:57:29
回答 3查看 494关注 0票数 0

大家都知道,H2是一个功能强大的纯Java,具有服务器/客户端模式和嵌入式等特性。

在使用H2数据库开发一个小软件时,我遇到了一个问题:

软件崩溃,连接保持打开,当重新启动软件时,我无法再次访问数据库(它处于嵌入式模式,因此被锁定),为了绕过这个问题,我不得不使用任务管理器手动关闭Java虚拟机

是否有办法防止这样的事件发生(应用程序崩溃),但我可以恢复正常的连接?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-20 03:07:21

如果JVM正常存在,H2通常会关闭数据库本身,如果您自己没有显式地关闭它。

在最坏的情况下,您可能可以使用Thread#setDefaultUncaughtExceptionHandler安全地终止JVM和/或关闭数据库。

票数 0
EN

Stack Overflow用户

发布于 2013-11-20 03:05:12

我强烈怀疑您的程序有错误的代码,在异常情况下无法关闭连接。检查所有数据库代码,确保即使抛出异常也关闭所有连接。

一种常见的方法是关闭试图捕获的finally块上的连接。

票数 0
EN

Stack Overflow用户

发布于 2013-11-20 15:16:11

@Ossama Nasser:是的,你什么都能陷进去。您最好这样做,或者提前知道您决定让哪些例外终止您的程序,以及对您的程序资源会产生什么影响。

Unix程序使用setjmp() & longjmp()。它是原始的,但它对大多数信号是有效的。

但是,JVM提供了一种替代方法,即“对main()中的所有内容进行尝试/最后处理”:

代码语言:javascript
复制
Runtime.getRuntime().addShutdownHook(new <whatever you write as a handler class>)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20086462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档