Servlets 实体管理器可以由两个servlet共享吗?

Servlets 实体管理器可以由两个servlet共享吗?,servlets,deployment,jpa-2.0,Servlets,Deployment,Jpa 2.0,我已经将我的公共类(域对象、实用程序和JPA2-持久性服务)打包到一个jar中。我将jar包含到另外两个应用程序的libs中,并为每个应用程序分别配置持久化单元和实体管理器。这两个应用程序都作为servlet部署在同一个tomcat上。但是,如果一个应用程序操纵MySQL数据库的数据,另一个应用程序就不会使用更新的数据 如何使用集中式持久性服务并允许所有应用程序访问最新数据?我是否必须使用JNDI或将所有内容打包为EAR而不是单个WAR 这类似于使用两个不同的JPA应用程序访问同一个数据库。在这

我已经将我的公共类(域对象、实用程序和JPA2-持久性服务)打包到一个jar中。我将jar包含到另外两个应用程序的libs中,并为每个应用程序分别配置持久化单元和实体管理器。这两个应用程序都作为servlet部署在同一个tomcat上。但是,如果一个应用程序操纵MySQL数据库的数据,另一个应用程序就不会使用更新的数据


如何使用集中式持久性服务并允许所有应用程序访问最新数据?我是否必须使用JNDI或将所有内容打包为EAR而不是单个WAR

这类似于使用两个不同的JPA应用程序访问同一个数据库。在这种情况下,每个应用程序使用自己的二级缓存会加剧问题。您可以让应用程序同步注释中提到的二级缓存。或者,您可以评估EntityManager的使用情况,确保它们不会被长时间保留,或者偶尔被清除。仅在需要时获取EM,并在完成该过程时关闭或清除。如果不使用二级缓存,这将确保根据事务操作需要从数据库读入数据


即使在单个应用程序中也可能发生过时数据,因此强烈建议使用乐观锁定,以避免用过时数据覆盖

JPA需要一个共享的二级缓存。这个问题与servlet无关。提到servlet只是为了描述一个特定的用例。好的。仅仅指出这不能/不应该用ServletAPI工具来解决。据我所知,共享二级Hibernate缓存是通过使用terracotta实现的。在我的情况下,这似乎像打破了车轮上的蝴蝶。难道没有其他选择吗?基本设置是什么样子的?