如何使用JPA获取数据库连接状态?

时间:2013-08-06 07:52:01

标签: java database hibernate jpa hibernate-entitymanager

在服务器启动期间(tomcat)我正在创建一个entitymangerfactory并存储到内存中。我的问题是,有什么办法可以在这段时间内检查连接状态吗?

现在发生了什么,它是在启动期间创建一个entitymangerfactory对象,但不测试是否已连接数据库。使用无效配置时,它会创建entitymanagerfactory但是当我们尝试执行某些查询时,我才会收到异常。

如果我想在服务器启动期间检查连接状态,该怎么办?

提前致谢

-regards, Somnath Guha

2 个答案:

答案 0 :(得分:1)

您应该创建一个实现ServletContextListener的servlet,

的web.xml:

<listener>
  <listener-class>test.JPACheckServlet</listener-class>
</listener>

代码:

public class JPACheckServlet implements ServletContextListener {
  public void contextInitialized(ServletContextEvent event) {
    here put the code for checking the connection and report status, logging...
  }
  public void contextDestroyed(ServletContextEvent event) {
    here to handle fancy shutdown situation, loggings, etc 
  }
}

阅读的好主题: How do servlets work? Instantiation, sessions, shared variables and multithreading

答案 1 :(得分:0)

让我重新解释一下你的问题:在启动期间,我想知道我是否能够成功执行查询。忘记连接状态,这是你的最终目标 - 执行JPA持久性的东西而不是连接错误。

所以...在创建工厂后启动期间,获取EntityManager并尝试执行简单的提取。看似很明显,没有?