【发布时间】:2011-02-24 17:35:25
【问题描述】:
我有一个配置为在 JBoss 下使用作用域类加载器的 WAR。这一切都很好,花花公子。 jboss-web.xml 中的配置如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-web PUBLIC
"-//JBoss//DTD Web Application 4.2//EN"
"http://www.jboss.org/j2ee/dtd/jboss-web_4_2.dtd">
<jboss-web>
<class-loading>
<loader-repository>
com.mycompany:loader='com.mycompany.repository'
<loader-repository-config>java2ParentDelegation=false</loader-repository-config>
</loader-repository>
</class-loading>
</jboss-web>
现在,一个客户想要在同一个 JBoss 实例下部署我们的 WAR 文件的两个副本。它们被配置为使用相同的类加载器存储库,这会导致问题。
如果我在 WAR 文件的一个副本中手动更改 jboss-web.xml 以指定不同的存储库,例如通过将相关行更改为:
com.mycompany:loader='com.mycompany.repository2'
...WAR 的两个副本都可以顺利部署。
但是,破解 WAR 文件的内部结构对于客户来说并不是一个绝妙的解决方案。
如果我可以将上下文根合并到存储库的名称中(或其他一些保证在两个部署之间不同的属性),这可以自动完成。
是否可以在 jboss-web.xml 中使用属性?,让我这样做:
com.mycompany:loader='com.mycompany.repository-${jboss.context-root}'
(注意:这个属性名是我编的。)
退一步,有没有更好的方法来完成我想要完成的事情?
【问题讨论】:
-
WAR 是使用 Ant 的“战争”任务构建的。