TomEE 中的宿主依赖资源

Host dependent resources in TomEE

我正在 TomEE 中使用 EJB 开发 Web 应用程序。

为了分离应用程序的开发、测试和生产环境,我在 server.xml 中使用了不同的 <Host> 条目。因此可以通过不同的 URL 选择环境,例如 dev.myapp.example.tldtest.myapp.example.tld.

资源(此时数据库连接)在tomee.xml中定义为

<Resource id="myappDatabaseDevelopment" type="DataSource"> ...

<Resource id="myappDatabaseTest" type="DataSource"> ...

现在,测试主机中的应用程序将访问测试数据库,开发主机和开发数据库也是如此。但这是一个笨拙的解决方案,因为这两个资源有不同的 id,所以我必须在 Java 代码中决定,取决于它 运行 所在的环境,选择哪个持久化单元.最好通过容器配置来管理它。但是我找不到任何方法来在 TomEE 配置文件中指定要在哪个主机上使用哪个资源。 server.xml 有主机,tomee.xml 有资源,但无法相互引用。

然而,TomEE 似乎可以识别不同的主机。当我在同一主机下部署同一个应用程序的两个版本,但应用程序(上下文)名称不同时,我会因为重复的部署 ID 而出错,而且由于在两个应用程序之间混合容器管理的 bean 会带来很多麻烦。使用不同的主机(和不同的 appBases)可以消除这些错误。

是否有任何方法可以根据主机对资源进行多种配置,具有相同的 id

看看 https://issues.apache.org/jira/browse/TOMEE-1449,在部署 ID 中添加主机应该就足够了。