0

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

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

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

提前致谢

-问候, Somnath Guha

4

2 回答 2

1

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

网页.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 
  }
}

值得阅读的好话题: servlet 是如何工作的?实例化、会话、共享变量和多线程

于 2013-08-06T08:06:30.153 回答
0

让我改一下你的问题:在启动期间,我想知道我是否能够成功执行查询。忘记连接状态,这是您的最终目标 - 执行 JPA 持久性内容并且不会出现连接错误。

所以......在创建工厂后的启动过程中,获取一个 EntityManager 并尝试执行一个简单的提取。看起来很明显,不是吗?

于 2013-08-06T08:43:24.187 回答