我在我的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
但是,我无法继续使用该网站,因为我收到一条消息,说会话丢失了。
我的问题是:这个hibernate异常是什么,我该如何解决呢?
编辑: 仅当我在会话中存储JPA实体时才会发生此错误,例如:已登录的用户
答案 0 :(得分:2)
除了JRebel之外,我不知道在Tomcat中获得你想要的任何东西。 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 /