我在我的 vaadin 项目中使用 hibernate 4.3.6。 每次我对源代码进行更改时,都希望再次构建应用程序并将新源代码自动部署到 Tomcat。换句话说,Tomcat 应该重新加载它的上下文。
问题是在这个操作期间hibernate抛出一个错误:
GRAVE: Exception loading sessions from persistent storage
org.hibernate.HibernateException: registry does not contain entity manager factory: myproject
at org.hibernate.jpa.internal.EntityManagerFactoryRegistry.getNamedEntityManagerFactory
(...)
在那条日志之后,我得到:
24/09/2014 13:14:43 org.apache.catalina.core.StandardContext reload
INFO: Reloading Context with name [/myproject] is completed
但是,我无法继续使用该网站,因为我收到一条消息说 session 已丢失。
我的问题是:这个 hibernate 异常是什么,我该如何解决?
编辑: 仅当我在 session 中存储 JPA 实体时才会发生此错误,例如:已登录的用户
最佳答案
我不知道有什么方法可以在 Tomcat 中获得您想要的东西,除了 JRebel。 Vaadin 的工作人员自己使用和推荐。有关 Vaadin+JRebel 的有趣信息的链接:http://zeroturnaround.com/blog/jrebel-case-study-vaadin-eliminates-redeploys-and-saves-10-of-development-time/
如果将来您决定使用 Jetty 而不是 Tomcat,您可以按照此处的建议进行设置并动态重新加载应用程序:https://blog.oio.de/2012/08/23/dynamic-reloading-of-vaadin-applications-with-maven-and-eclipse/
关于java - 部署期间的 Hibernate 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26021985/