【发布时间】:2016-05-22 11:51:27
【问题描述】:
我正在使用 TomEE 中的 EJB 开发一个 Web 应用程序。
为了分离应用程序的开发、测试和生产环境,我在server.xml 中使用了不同的<Host> 条目。因此可以通过不同的 URL 选择环境,例如 dev.myapp.example.tld 和 test.myapp.example.tld。
资源(此时数据库连接)在tomee.xml 中定义为
<Resource id="myappDatabaseDevelopment" type="DataSource"> ...
<Resource id="myappDatabaseTest" type="DataSource"> ...
现在,测试主机中的应用程序应该访问测试数据库,对于开发主机和开发数据库也是如此。但这是一个笨拙的解决方案,因为这两个资源有不同的ids,所以我必须在 Java 代码中决定,取决于它运行的环境,选择哪个持久性单元。最好通过容器配置来管理它。但是我找不到任何方法来在 TomEE 配置文件中指定要在哪个主机中使用哪个资源。 server.xml 有主机,tomee.xml 有资源,但无法相互引用。
不过,TomEE 似乎可以识别不同的主机。当我在同一主机下部署同一应用程序的两个版本,但应用程序(上下文)名称不同时,由于部署 ID 重复而出现错误,并且由于在两个应用程序之间混合容器管理的 bean 会带来很多麻烦。使用不同的主机(以及不同的appBases)可以消除这些错误。
有没有办法让一个资源具有多个配置,具有相同的id,具体取决于主机?
【问题讨论】: