【问题标题】:How to override JPA datasource JNDI name during deployment on glassfish 3?在 glassfish 3 上部署期间如何覆盖 JPA 数据源 JNDI 名称?
【发布时间】:2012-02-15 11:13:57
【问题描述】:

我正在尝试将我的 JPA 应用程序部署在同一个 glassfish 3 域中的 2 个单独的实例上两个实例都将使用相同的 JNDI 名称查找数据源,但我希望它们找到不同的数据源。 我尝试定义 2 个数据源并将它们绑定到不同的目标,但 DAS 不允许使用相同 JNDI 名称的 2 个数据源,即使它们绑定到不同的目标。

我尝试使用属性替换,但没有奏效。 有谁知道如何解决这个问题?似乎不可能在同一个域中部署两次应用程序。

【问题讨论】:

    标签: jpa properties jpa-2.0 datasource jndi


    【解决方案1】:

    JNDI 名称是特定对象的地址,它们必须是唯一的。拥有两个 JNDI 名称就像您的手机中有 2 个用于“alex”的号码。无法知道您拨打的是哪个号码。

    对于任何 JPA 实现,我要做的就是在您的 persistent.xml 上设置两个 PU,一个带有 JNDI 数据源,另一个带有另一个 JNDI 数据源。这也很有意义,因为您可能在两个数据源上没有相同的业务对象。

    然后,当您获得 EntityManager 时,明确指定您想要的 PU。您可以在配置文件中设置它或以其他方式动态决定它。

    entfactory = OpenJPAPersistence.createEntityManagerFactory( *persistentUnitName*, (String) null );
    

    希望这会有所帮助--

    -亚历克斯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-01
      • 2023-03-28
      • 2019-02-15
      • 2012-10-31
      • 2015-04-18
      • 1970-01-01
      相关资源
      最近更新 更多