在服务器启动(tomcat)期间,我正在创建一个实体管理器并将其存储到内存中。我的问题,有什么办法可以在这段时间内检查连接状态吗?
现在发生了什么,它在启动过程中创建了一个entitymangerfactory对象,但不测试是否连接了数据库。使用无效配置,它正在创建 entitymanagerfactory,但是当我们尝试执行一些查询时,我才得到异常。
如果我想在服务器启动时检查连接状态怎么办?
提前致谢
-问候, Somnath Guha
在服务器启动(tomcat)期间,我正在创建一个实体管理器并将其存储到内存中。我的问题,有什么办法可以在这段时间内检查连接状态吗?
现在发生了什么,它在启动过程中创建了一个entitymangerfactory对象,但不测试是否连接了数据库。使用无效配置,它正在创建 entitymanagerfactory,但是当我们尝试执行一些查询时,我才得到异常。
如果我想在服务器启动时检查连接状态怎么办?
提前致谢
-问候, Somnath Guha
您应该创建一个实现 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 是如何工作的?实例化、会话、共享变量和多线程
让我改一下你的问题:在启动期间,我想知道我是否能够成功执行查询。忘记连接状态,这是您的最终目标 - 执行 JPA 持久性内容并且不会出现连接错误。
所以......在创建工厂后的启动过程中,获取一个 EntityManager 并尝试执行一个简单的提取。看起来很明显,不是吗?