【问题标题】:How can I create global context variables in JBoss?如何在 JBoss 中创建全局上下文变量?
【发布时间】:2011-03-01 19:46:48
【问题描述】:

这是我不久前发布的一个问题的后续:“Can I use a single WAR in multiple environments?”。我能够在 Tomcat 中创建单一战争解决方案,但现在我们正在将我们的应用程序迁移到 JBoss 4.2,我不知道如何设置全局环境变量。

在 Tomcat 6 中这非常简单:我只是将以下 sn-p 放入 tomcat/conf/Catalina/myappname.xml

<Context ...>
   <Environment name="TARGET_ENV" value="DEV" type="java.lang.String" override="false"/>
</Context>

然后在我的应用程序中,我能够使用以下内容解析环境名称:

Context context = (Context) InitialContext().lookup("java:comp/env");
String targetEnvironment = (String) context.lookup("TARGET_ENV");

问题是我不知道在哪里/如何在 JBoss 中放置全局变量。我尝试将&lt;Environment&gt; 标签放在以下文件中无济于事:

  • server/all/deploy/jboss-web.deployer/context.xml
  • server/default/deploy/jboss-web.deployer/context.xml

我知道我可以将环境变量放在我的应用程序的 web.xml 中,但这违背了进行统一战争的目的 - 我仍然需要为 dev、qa 和 prod 自定义 .war。

我是 JBoss 新手,所以如果有任何其他信息可以帮助我,请告诉我,我会附加到这个问题。

【问题讨论】:

    标签: java jakarta-ee jboss jboss-4.2.x


    【解决方案1】:

    我使用类似于 PropertiesService 的东西作为数据库 url 和其他与环境相关的东西。

    因此,我可以从提供不同环境相关属性的负担中解脱出来。

    【讨论】:

    • 属性服务是一个选项,它可以工作——但它不是特定于 jboss 的吗?如果 .ar 可以在 jboss netbeans 中工作而无需修改 .war 本身,那就太好了。可能吗?
    • 我自己开发了一个类似的服务(解析 ${variables}),我将属性文件放在类路径的某个位置,因此我不会遇到依赖于特定应用程序服务器的问题。
    • 关于“JBOSS 中的外部属性”的两个问题: 1) 您是否将配置文件签入到您的源代码控制系统? 2) 应用程序如何知道要使用哪个配置(DEV、TEST、UAT、PROD)?
    猜你喜欢
    • 1970-01-01
    • 2014-11-29
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多