在服务器启动期间(tomcat)我正在创建一个entitymangerfactory并存储到内存中。我的问题是,有什么办法可以在这段时间内检查连接状态吗?
现在发生了什么,它是在启动期间创建一个entitymangerfactory对象,但不测试是否已连接数据库。使用无效配置时,它会创建entitymanagerfactory但是当我们尝试执行某些查询时,我才会收到异常。
如果我想在服务器启动期间检查连接状态,该怎么办?
提前致谢
-regards, Somnath Guha
答案 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并尝试执行简单的提取。看似很明显,没有?