当前位置: 首页 > 面试题库 >

如何处理数据库崩溃(Glassfish / MySQL)?

魏兴邦
2023-03-14
问题内容

我有一个包含Glassfish 3.1.2.2,MySQL数据库和Swing客户端应用程序的3层应用程序。是否有可能处理数据库服务器崩溃?

我试图在应用程序运行期间停止MySQL服务。然后,每当我尝试通过我的Facade会话bean之一访问数据库时,我都会获得javax.ejb.EJBAccessException异常。

我想通知用户该数据库当前已关闭。此外,我想将我的应用程序设置为“睡眠模式”,直到数据库启动并再次运行。

有什么好方法(可能很简单)来处理这种情况?

谢谢您的帮助!


问题答案:

A)确保将Glassfish连接池配置为自动恢复/重新连接

在Glassfish JDBC连接池配置中,设置以下值:

  • 属性: is-connection-validation-required, validate-atmost-once-period-in-seconds, connection-creation-retry-attempts, connection-validation-method, connection-creation-retry-interval-in-seconds, ping

Glassfish配置jdbc-connection-
pool属性

Glassfish Admin-create-jdbc-connection-
pool子命令

脚步:

  1. 假设Glassfish正在运行(例如,通过打开“服务器”并右键单击Glassfish,在“ Netbeans服务”选项卡中启动服务器),则应该运行Domain Admin Server
  2. 在网络浏览器中打开管理控制台:( http://localhost:4848 或使用在安装过程中指定的任何端口。
  3. 在左侧的“常见任务”菜单下,打开“资源”->“ JDBC”,然后单击“ JDBC连接池”
  4. 单击您的连接池“池名称”(或通过单击“新建”按钮创建一个新池)
  5. 选择高级选项卡并输入:
  6. 最多一次验证:(例如60)秒
  7. 创建重试尝试:(例如3个)
  8. 重试间隔:(例如10)以秒为单位
  9. 连接验证:(打勾)必填
  10. 验证方法:(例如,自动提交)
  11. 其他所需的高级属性
  12. 选择常规标签并输入:
  13. 平(刻度)
  14. 所需的其他一般属性

B)实施应用程序错误处理/数据库监视和警报

  1. 强制:捕获“基础结构级别”的致命用户错误并警告支持人员。

创建一个简单的JMX类发送通知,并在发生致命错误时调用其方法,该JMX
MBean类发送通知。您可以使用JMX监视器控制台来观察服务器的状态-
其中一些控制台发送电子邮件警报(例如JManage和RHQ),并且存在用于从HTTP /
AJax或其他语言进行访问的桥(例如Jolokia可以使用javascript / perl / java API访问JMX通知)。

使用Google Calendar API发送错误消息,以支持工作人员的Google日历(以后1或2分钟)。然后将Google日历配置为发送电子邮件/短信通知-
将直接向错误警报提供支持,以近实时支持人员。这受到Google使用限制的限制(每天礼节性限制为10,000个查询,因此请确保您的应用程序不是超级错误,并使用逻辑来限制每小时/每天/每周发送的消息数)

  1. 理想:监控数据库(可能还有应用服务器)并警告支持人员停机

    • Zabbix开源具有内置的mySQL监视和警报-轻量级但需要设置和配置
    • Hyperic开源具有用于mySQL监视和内置警报的扩展插件-重量很重,设置和配置可能很复杂
    • Nagois开源是* nix操作系统的默认设置-重量很重,设置和配置可能很复杂

在所有情况下,设置都不会立即发生-最好将其作为一个单独的小型项目实施并正确执行-最好让支持人员参与其中。

如果这些“超出范围”,则创建自己的简单监视器:

* 一个EJB计时器,用于对您的数据库运行计划的简单测试查询-如果失败,则发送警报(通过JMX / Google日历/ Java Mail / SMS网关API)。或使用Quartz开源调度程序完成相同的工作


 类似资料:
  • 我见过许多问题,询问为什么一个应用程序会崩溃,错误日志如下:未能获得FirebaseDatabase实例:FirebaseApp对象在其FirebaseOptions对象中没有DatabaseURL。 我通过Android Studio配置了firebase。 我仍然会遇到错误。 我相信google-services.json文件没有错误,因为它是由Android Studio自动创建的。 任何帮

  • 我试图在我的Postgres 9.1中安装plpython,但它使服务器崩溃: 我已经安装了python 2.6.8,并且在系统中正确声明了处理程序: 并且处理程序安装在$libdir中: 任何有关这方面的线索都将受到重视 编辑 我尝试创建扩展plpythonu、plpython2u和plpython3u,它们都会使服务器崩溃。 读了一些文档后,我发现\dx命令列出了已安装的扩展: 所以我想唯一安

  • 我正试图用下面的“为Android设置Firebase实时数据库”的例子写入我的数据库,但应用程序在启动时崩溃。 似乎是因为依赖: 我的应用程序Build.Gradle: 如何解决此问题?

  • 问题内容: 我正在Windows命令提示符下运行python脚本。它调用下面的函数,该函数使用LAME将MP3文件转换为wave文件。 不幸的是,LAME总是在某些MP3上崩溃(并达到其名称)。出现Windows“您的程序已崩溃”对话框,该对话框冻结了我的脚本。关闭窗口对话框后,将引发AudioProcessingException。无需告诉Windows关闭,我只想脚本引发异常,然后转到下一个M

  • 本文向大家介绍详解Android中处理崩溃异常,包括了详解Android中处理崩溃异常的使用技巧和注意事项,需要的朋友参考一下 大家都知道,现在安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象,开发者个人不可能购买所有设备逐个调试,所以在程序发布出去之后,如果出现了崩溃现象,开发者应该及时获取在该设备上导致崩溃的信息,这对于下一个版本的

  • 问题内容: 当我编写自己的扩展类并使其生成时,在Interface Builder中收到两个错误,即: Main.storyboard:错误:IB Designables:无法更新自动布局状态:代理由于FD关闭而崩溃 Main.storyboard:错误:IB Designables:无法呈现RandjeUIButton的实例:代理崩溃 这是我的代码: 我正在OS X 10.11 beta 2上的