【问题标题】:Two glassfish applications deployed with one war file, operating on different databases使用一个 war 文件部署的两个 glassfish 应用程序,在不同的数据库上运行
【发布时间】:2016-12-13 15:39:02
【问题描述】:

我有一个 Netbeans 项目,我从中构建了一个 .war 文件。我现在在我的 glassfish 服务器上部署该 war 文件的两个实例,每个实例都有不同的上下文根,例如mydomain.com/abcmydomain.com/def

这工作正常,但它们仍在同一个数据库上运行,因为我在 persistence.xmlglassfish-resources.xml 中声明了持久性单元。

我的glassfish-resources.xml 文件:

...
<jdbc-resource  enabled="true"
                jndi-name="jdbc/abc"
                object-type="user"
                pool-name="abcPool">
    <description/>
</jdbc-resource>

<jdbc-connection-pool
    ...
    name="abcPool"
    ...
    <property name="URL" value="jdbc:mysql://localhost:3306/abc"/>
    ...
</jdbc-connection-pool>

我的persistence.xml 文件:

...
<persistence-unit name="abcPU" transaction-type="JTA">
    <jta-data-source>jdbc/abc</jta-data-source>
    ...
</persistence-unit>
...

有没有人解决如何让一个war文件的两个实例在两个不同的数据库上运行?

有没有办法将不同的glassfish-resources.xmlpersistence.xml 上传到每个应用程序,覆盖打包的应用程序?

如果可能的话,一旦部署应用程序,在 glassfish 域管理控制台中更改模块描述符是可以接受的。

如果需要来自 glassfish 域管理控制台的截图,请写在 cmets 中,我会添加它们。

提前谢谢你!

【问题讨论】:

  • 两个 glassfish 应用程序部署在一个 war 文件中 什么 意味着

标签: java xml jakarta-ee glassfish


【解决方案1】:

在我看来,最简单的方法是使用两个不同的构建。

基本上,您可以创建两个不同的 .war 文件。每个都有不同的 persistence.xml 文件。一个指向 JDBC 资源 ABC,另一个指向 JDBC 资源 DEF。

像 gradle+Jenkins 这样的构建工具可能会为您提供支持。

如果您搜索如何创建具有不同配置的构建以用于测试和生产系统,您会发现很多关于类似任务的信息。这是一项非常常见的任务。

这里可能是您正在寻找的起点: Create multiple .WAR files with different dependencies in Gradle

【讨论】:

  • 感谢您的快速回复!我宁愿只有一个战争文件,但这绝对是我问题的解决方案!感谢您的想法和链接!
【解决方案2】:

在服务器级别设置两个指向不同数据库的数据源并转到应用程序实例并修改指向特定数据源的资源引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    • 2022-01-25
    • 1970-01-01
    • 2015-02-10
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多