【问题标题】:Is it possible for two Java EE applications to share the same persistent unit and data source两个 Java EE 应用程序是否可以共享相同的持久单元和数据源
【发布时间】:2017-03-20 10:42:43
【问题描述】:

我们正在开发一种供内部使用的 SDK,其中包括一些自定义注释、请求过滤器和一些 JPA 实体,用于存储有关我们组织用户的信息。 SDK 是一个 maven 工件,包括对保存用户信息实体的持久性单元的定义。

我们的问题是:我们必须支持使用我们的 SDK 部署到同一个容器或它们自己的容器中的多个应用程序。 (SDK的持久化组件不能重构为自己的微服务)

我们的问题:既然我们的授权组件使用的持久化单元是在SDK中定义的,那么在同一个容器中运行的多个Java项目引用同一个数据源/持久化单元组合会不会造成问题?或者有没有我们可以并且应该实施的解决方法?

【问题讨论】:

  • 我能想到的一个解决方案是,所有项目都将 SDK 添加为普通的 Maven 依赖项,但每个应用程序都有自己的 persistence.xml,其中 SDK 也是引用,实体包含在 my-sdk.jar
  • 这听起来不像是正确的做法。我们正在尝试将复杂性降低到单个 Maven 依赖项。我们可以通过从 git 中检出文件并手动修改项目中的文件来使其工作,但我们的项目专门将其简化为来自 Maven 的包含。

标签: jakarta-ee jpa-2.0 persistence-unit


【解决方案1】:

我能想到的一种方法是为 persistence.xml 提供一个模板,该模板将包含除 pu 名称之外的所有配置,pu 名称需要在 sdk 中占位,并且在构建单个应用程序时有一个 ant 运行脚本(可能是来自 sdk 的 java 类),它将从应用程序的属性文件中获取项目特定的 pu 名称,并通过替换模板中的 pu 占位符来创建应用程序的 persistence.xml 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-27
    • 2011-08-07
    • 1970-01-01
    • 2014-11-05
    • 2014-11-06
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多