【问题标题】:how can I have a dynamic persistence unit name?我怎样才能有一个动态的持久性单元名称?
【发布时间】:2021-11-19 05:04:30
【问题描述】:

我有一个应用程序,用 JEE、JPA 编写,我使用 Payara 作为应用程序服务器。

在我的应用程序的 persistence.xml 中

<persistence-unit name="XYZ" transaction type="JTA" >

在 payara 方面,我有一个名为 XYZ 的 JDBC 资源,带有 JDBC 连接池。 应用程序使用的数据库专用于一位客户。

现在我想将此应用程序(未更改)部署给其他客户(在同一台服务器上),每个客户都需要单独的数据库。为了实现这一点,我需要为每个客户修改持久化单元名称并重新编译应用程序,当然,还要在 Payara 端定义 JDBC。

我想以某种方式让这个持久性单元名称是动态的,因此我不必为每个客户重新编译应用程序。有什么简单的方法可以实现吗? 在最坏的情况下,我可以只修改编译好的war文件中的persistence.xml,但我希望有一个更优雅的解决方案。

请告知如何解决该问题。

【问题讨论】:

  • 也许您可以在每次部署时将相同的数据源名称映射到不同的数据库,从而无需更改持久性单元名称?

标签: jpa jakarta-ee jta payara persistence.xml


【解决方案1】:

您可以在 Payara 中为每个客户设置一个自己的实例,并将您的程序部署到这些实例。
然后,您可以为每个实例设置一个不同的变量。
这个变量可以在你的 persistence.xml 中使用。

此处记录了使用变量:
https://docs.payara.fish/community/docs/documentation/payara-server/server-configuration/var-substitution/README.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 2016-12-31
    • 2020-07-28
    • 1970-01-01
    • 2021-07-08
    相关资源
    最近更新 更多