【问题标题】:Using properties/variables in jboss-web.xml在 jboss-web.xml 中使用属性/变量
【发布时间】: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 的“战争”任务构建的。

标签: java jboss


【解决方案1】:

实现您想要的正常 J2EE 方法是将代码与部署分开。这意味着将jboss-web.xml 放入WAR 是这里的错误。 在部署期间应使用此特定于部署的配置文件。我不太了解 jboss 部署过程,但是对于 Oracle IAS 来说是这样的:

  • WAR/EAR 仅包含特定于代码的设置和环境条目的声明、使用的数据源、安全角色等(在 web.xml 中),但不包含条目的值
  • 在部署时,供应商特定的部署描述符(orion-web.xml 用于 Oracle,jboss-web.xml 用于 jBoss)包含角色、数据源、环境条目等的映射运行时值被传递给容器(完成在容器特定的方式中,Oracle 获取通过 cmdline arg 或通过浏览器形式上传给出的部署计划文件,即您上传 EAR 和部署计划,部署计划包含所有供应商特定的部署描述符)

JSR 88 定义了部署计划概念,还定义了deployment plan facility。所以这应该是您查看 int jboss 文档的起点。

如前所述,这是将部署时值映射与代码 WAR/EAR 分开的标准 J2EE 方法。 在您的特定情况下,您最终会得到一个 EAR 和两个不同的部署计划。

【讨论】:

  • 可能是正确的答案,并且值得为我们的未来进行调查......现在我们正在努力使应用程序易于部署,以便为非 Java 精通的客户部署。
【解决方案2】:

您可以将您的 war 文件部署为展开的 .WAR 目录,而不是单个 .WAR 文件。这将允许您在每个实例中轻松编辑 jboss-web.xml。 Web 应用程序中引用的任何代码/资源都应编译为 JARS 并添加到应用程序类路径中。这将减少您的 WARS 的大小并防止它们被错误地编辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 2015-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多