我正在尋找將要在Weblogic 10.3服務器上部署的應用程序使用外部屬性文件的最佳方法。我在網站上閱讀了大量文章,但我不想將屬性文件的路徑硬編碼或將文件放在domains/mydomain文件夾中。使用Weblogic的外部屬性文件
是否有這樣做的動態方式,因此在部署應用程序時,屬性文件也安裝在部署文件夾下並且從那裏讀取?
非常感謝
我正在尋找將要在Weblogic 10.3服務器上部署的應用程序使用外部屬性文件的最佳方法。我在網站上閱讀了大量文章,但我不想將屬性文件的路徑硬編碼或將文件放在domains/mydomain文件夾中。使用Weblogic的外部屬性文件
是否有這樣做的動態方式,因此在部署應用程序時,屬性文件也安裝在部署文件夾下並且從那裏讀取?
非常感謝
不需要把文件在其他地方另一種選擇應用程序將讀取它是使用通用文件加載覆蓋: http://download.oracle.com/docs/cd/E21764_01/web.1111/e13702/config.htm#i1066493
這包括創建一個目錄,這將是您的部署的根目錄下,姑且稱之爲FooApplication有FooApplication.ear和FooWeb.war。這被稱爲應用程序安裝目錄。你的應用程序進入FooApplication/app子目錄,無論它是一個檔案文件(比如.ear,.war,jar),還是它是其中一個檔案的分解版本。您的可選部署計劃(您必須有一個才能使用此功能,它可能是一個計劃,除了指定配置根元素和文檔中描述的值之外,沒有太多的工作)進入FooApplication/plan。您可以將您想要覆蓋應用程序的屬性放在FooApplication/plan/AppFileOverrides目錄結構中。 http://download.oracle.com/docs/cd/E21764_01/web.1111/e13702/deployunits.htm#sthref9
一旦部署這種風格做,你從你的應用程序中編寫這樣的代碼和myApp.properties的內容,您可以通過FooApplication /計劃讀/ AppFileOverrides/FooWeb.war/myApp.properties將實際讀入的文件。
Properties myAppProps = new Properties();
InputStream iostream =
Thread.currentThread().getContextClassLoader().getResourceAsStream("myCfg/myApp.properties");
myAppProps.load(iostream);
這是通過在文檔中解釋的類中加入類加載器來完成的。初始化配置看起來可能很乏味,但它是一個直接滿足原始問題的功能,僅適用於特定的應用程序。
方法#1
更新服務器啓動腳本中通過以下系統變量JVM(下面是例如在Windows OS)
call "%DOMAIN_HOME%\bin\startWebLogic.cmd" "-Dcom.mycompany.myapp.EXTERNAL_CONFIG_PATH=/mycompany/myapp/config" %*
使用這個變量,指向你的配置目錄,從那裏讀取配置。您需要在要部署應用程序的每臺服務器上進行此設置。
方法2
使用WebLogic共享庫
http://download.oracle.com/docs/cd/E12840_01/wls/docs103/programming/libraries.html
按照以下構建過程中
當你說「我在網站上閱讀了很多文章,但我不想硬編碼屬性文件的路徑」我假設你說你不想在你的硬編碼中Java代碼。如果是這樣,那麼請參閱下面
在這裏找到答案:
有辦法讀取的WebLogic類路徑屬性中的Java文件
一(位於WebLogic域屬性文件):刪除屬性文件在Domain目錄中。通過這種方式,屬性文件會自動添加到weblogic類路徑中,並且我們可以使用resourceAsStream從Java中讀取。
兩個(來自用戶定義位置的屬性文件):這種方法的優點是屬性文件可以位於JAR或EAR文件之外,並且可以方便地進行修改。
package com.test;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class PropertyFileExample {
private static Properties prop;
public static void myMethod() {
InputStream is = null;
try {
prop = new Properties();
String propFilePath = System.getProperty(「propFileLocation「);
InputStream iStream = PropertyFileExample.class.getClassLoader().getResourceAsStream(propFilePath);
prop.load(iStream);
prop.getProperty(「dbuser」);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
在WebLogic的setDomainEnv(下bin)中,我們需要通過屬性文件的位置作爲-D參數JAVA_OPTIONS
組JAVA_OPTIONS =%JAVA_OPTIONS%-DpropFileLocation =的/ dev /文件/物業/ some.properties
希望它有幫助!
您可以在類路徑中設置一個目錄,並將您的自定義屬性文件放在該文件夾/目錄中。因此,整個目錄以及屬性文件將位於classpath中。 要設置目錄在classpath在WebLogic 10.3.x中
%DOMAIN_HOME%\config\
文件夾中創建一個文件夾。示例appConfig
。config.properties
)放在appConfig
目錄/文件夾中。通過設置%DOMAIN_HOME%\config\appConfig
作爲價值EXT_POST_CLASSPATH
(這個變量在setDomainEnv.cmd
文件中定義)修改setDomainEnv.cmd
(Windows)中,包括在classpath appConfig
變量如下:
set EXT_POST_CLASSPATH=%EXT_POST_CLASSPATH%;%DOMAIN_HOME%\config\appConfig
你可以訪問該文件在你的Java代碼如下:
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream ("config.properties");
Properties prop = new Properties();
prop.load(inputStream);
String value = prop.getProperty("key");
希望這會有所幫助。
如何使用wlst/jython中的創建屬性離線配置JAR作爲共享庫? – sloven