2010-06-09 81 views
3

這是我後來發佈的一個問題的後續:「Can I use a single WAR in multiple environments?」。我能夠在Tomcat中創建單一戰爭解決方案,但現在我們正在將應用程序遷移到JBoss 4.2,並且我無法弄清楚如何設置全局環境變量。如何在JBoss中創建全局上下文變量?

在Tomcat中6,這是非常簡單的:我只是把下面的代碼片段中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中放置全局變量的地方/方式。我試圖把<Environment>標籤在下列文件無濟於事:

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

我知道,我可以把環境變量在我的應用程序的web.xml但失敗實現統一戰爭的目的 - 我仍然需要定製.war的開發,qa和prod。

我是JBoss新手,所以如果有任何額外的信息,只會讓我知道,我會附加到這個問題。

回答

1

我使用類似於PropertiesService的數據庫url和其他環境相關的東西。

因此,我可以免除提供不同環境相關離心機的負擔。

+0

屬性服務是一個選項,它可以工作 - 但它不是特定於jboss?如果沒有對.war本身進行修改,那麼有一個.ar可能可以在jboss *和* netbeans中工作。可能? – NobodyMan 2010-06-09 20:02:27

+0

我自己開發了一個類似的服務(解析$ {variables}),這些屬性文件我放在classpath的某個地方,因此我不會遇到與特定應用程序服務器上的依賴關係問題。 – stacker 2010-06-11 11:21:04

+0

關於「JBOSS中的外部屬性」有兩個問題: 1)您是否將配置文件簽入您的源代碼管理系統? 2)應用程序如何知道使用哪個配置(DEV,TEST,UAT,PROD)? – dchucks 2010-08-11 19:00:09