0

我已将我的常用类(域对象、实用程序和 JPA2 - 持久性服务)打包到一个 jar 中。我将 jar 包含到我的其他两个应用程序的库中,并为每个应用程序独立配置持久性单元和实体管理器。两个应用程序都部署为同一个 tomcat 上的 servlet。但是,如果一个应用程序操作 MySQL-DB 的数据,则另一个应用程序不会使用更新的数据。

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

4

1 回答 1

0

这类似于使用 2 个不同的 JPA 应用程序访问同一个数据库。在这种情况下,每个使用自己的 L2 缓存的应用都会加剧这个问题。如评论中所述,您可以让应用程序同步其 L2 缓存。或者,您可以评估 EntityManager 的使用情况并确保它们不会被长时间持有或偶尔被清除。仅在需要时获取 EM,并在完成该过程后关闭或清除它。如果不使用 L2 缓存,这将确保根据需要从数据库中读取数据,更符合事务操作。

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

于 2013-01-17T13:10:28.517 回答