【发布时间】:2017-04-22 14:37:14
【问题描述】:
具体来说,我说的是 GlassFish 服务器和 MySQL 数据库。
我在部署时通过asadmin 为我的应用程序创建 JDBC 数据源。由于我希望能够同时运行我的应用程序的多个实例,因此我希望数据源(以及身份验证领域)标识符是可变的,并且可以使用 Docker 环境变量进行配置。
基本上,我希望每个应用程序实例都有自己的数据库,但同时我希望所有实例共享同一个应用程序和 MySQL 服务器。
所以我需要能够在部署时配置persistence.xml 和web.xml 中的条目(特别是我的持久性单元的jta-data-source 和我的登录配置的realm-name)。
这听起来很容易,但结果却异常困难。我发现了一些解决方案,但我认为它们非常老套:
- 使用 Maven 修改部署描述符并为每个实例构建不同的
.war。显然,如果它们都共享相同的代码,我不想为每个实例构建一个新应用程序。 - 在 GlassFish 域文件系统中部署后修改部署描述符。这将需要重新启动服务器并为每个实例进行两次部署。
- 使所有实例共享同一个数据库。这是一种常见的做法吗?似乎是不必要的开销。
- 在描述符中使用系统属性和
${reference}它们。我根本找不到使用 GlassFish 设置应用程序范围系统属性的正确方法。
那我该怎么办呢?
另一方面:在运行时修改身份验证领域时,我总是需要重新启动服务器,对吗?有什么办法吗?有没有更好的方法来处理这个一般用例(答案可能是肯定的)?
【问题讨论】:
-
不完全是你的场景,但有很多有用的调整。我制作了一个示例 docker 文件,用于使用运行时和构建配置部署 Wildfly 应用程序。看这里:github.com/BITFORCE-IT/WildFlyApp
标签: java mysql jakarta-ee web glassfish