Java 如何判断数据库是否已关闭或不可用?
我正在使用Spring DefaultMessageListenerContainer来使用队列中的消息。然后将这些消息保存到Oracle数据库中 当数据库宕机时,我抛出onMessage方法的异常,将消息留在队列中等待重新处理。下面您可以看到,在DataAccessResourceFailureException和CannotCreateTransactionException异常上,我将异常从方法中抛出,从而将其放回队列。其他异常不保存消息;它们对应于数据问题等Java 如何判断数据库是否已关闭或不可用?,java,spring,hibernate,jms,Java,Spring,Hibernate,Jms,我正在使用Spring DefaultMessageListenerContainer来使用队列中的消息。然后将这些消息保存到Oracle数据库中 当数据库宕机时,我抛出onMessage方法的异常,将消息留在队列中等待重新处理。下面您可以看到,在DataAccessResourceFailureException和CannotCreateTransactionException异常上,我将异常从方法中抛出,从而将其放回队列。其他异常不保存消息;它们对应于数据问题等 public void on
public void onMessage(javax.jms.Message mqMessage) {
...get the message blah, blah, blah
try {
this.theService.doMessage(tmaticMessage, theHandler);
} catch (DataAccessResourceFailureException e) {
this.slowDown(mqMessage);
throw e;
} catch (CannotCreateTransactionException e) {
this.slowDown(mqMessage);
throw e;
} catch (DataAccessException e) {
...
} catch (TmUnusableMessageException e) {
...
} catch (Exception e) {
...
}
}
阅读Spring文档时,我发现DataAccessResourceFailureException应该被抛出“…当资源完全失效时:例如,如果我们不能使用JDBC连接到数据库。”问题是,我刚刚做了一个测试,让DBA关闭数据库,并得到一个新的异常:CannotCreateTransactionException。这是可以抛出的又一个异常。我想知道是否还有其他人
我正在使用Spring连接和getHibernateTemplate()进行调用。问题是。我如何知道当数据库关闭时会抛出哪些异常?可能这种复杂性是由“关闭数据库”的各种方式造成的。例如:
- 删除表
- 删除整个数据库
- 禁用数据库用户帐户
- 正在关闭数据库服务器