2016-09-01 2 views
0

Мне нужно прочитать в config.properties для некоторой конфигурации. Я открыт для любого способа сделать это, с требованиями.как читать config.properties j2ee

Я хочу, чтобы это было за пределами моего военного файла, чтобы его можно было легко изменить и не требует пересоединения.

Я искал всюду, но не могу найти, как это сделать, я уверен, что это java 101, но я не могу его изобразить.

Я попробовал загрузчик классов, но, похоже, загружает только ресурсы из-за войны, и я не могу найти, как получить местоположение, в которое я загрузил войну на свой сервер, чтобы прочитать ее оттуда. Я также не могу найти способ передать аргумент через параметр командной строки в качестве конечной точки мыла, доступ к которой я могу получить в любом месте моего кода?

Я видел это Where to place and how to read configuration resource files in servlet based application? , и я хочу использовать подход файловой системы, но я не хочу жестко закодированный путь для файла конфигурации.

Я просто хочу что-то простое и легкое, я знаю, что есть что-то, но я просто не могу его найти.

+0

Что не так с помещением в classpath вне проекта, как намечено в дублировании? – BalusC

+0

@BalusC это не работает. Я добавил в Windows свою компьютерную среду PATH, но она не загрузит ее. im не уверен, как добавить папку в java classpath в weblogic? – f1wade

ответ

0

использование это пригодится ваш вопрос. думаю. В один метод ABCD

public static String abcd(String one) { 
    properties = new Properties(); 
      properties.load(<classNmae>.class.getClassLoader().getResourceAsStream("AppResources.properties")); 
return properties.getProperty(one); 

называют этот код

String fileLocation = abcd("internal property file"); 

      Properties properties = new Properties(); 
     FileInputStream fis = new FileInputStream(fileLocation); 
     properties.load(fis); 
     fis.close(); 

     acd = (String)properties.get("acd"); 

Примечание: AppResources.properties имеют внешнее расположение файла D: /aaa.properties файл затем во втором методе вы читаете свойства внешнего file

+0

, который работает, но делает местоположение моего файла внешних свойств эффективно жестко закодированным, поскольку мне нужно перекомпилировать и построить WAR, чтобы изменить его. – f1wade

0

Я хочу, чтобы он находился за пределами моего военного файла, чтобы его можно было легко изменить и не требует пересоединения.

Может не быть, как вы хотите, но только, чтобы ответить на этот вопрос, мы имеем аналогичную ситуацию, когда наши веб-приложения развертываются на веб-серверах, расположенных в местах /apps/servers/webserver-1, /apps/servers/webserver-2. И у нас есть свойства, размещенные в некоторых других местах, таких как /apps/my-web-app1/app.properties и /apps/my-web-app2/app.properties.

Теперь хорошая вещь об этой структуре заключается в том, что если мне нужно обновить какое-либо свойство, я просто сделаю редактирование в относительном свойстве и перезагрузите свой веб-сервер. Недостатком этого является то, что я должен передавать пути к этим файлам свойств в качестве системных аргументов в сценарии запуска веб-сервера (в моем случае это файлы, да, я использую tomcats).

Так что мой catalina.sh имеет линию где-то валяется что-то вроде

export JAVA_ARGS `-Dpath.to.properties.of.my-web-app2=/apps/my-web-app2/app.properties` .... 

Чтобы прочитать эти свойства, у меня есть функция Property Utility, который вызывается с помощью StartupServlets каждого приложения. Цель этой функции - просто открыть этот файл, прочитав системное свойство path.to.properties.of.my-web-app2 и поместив эти свойства в нечто вроде кеша (HashMap в моем случае), откуда я могу легко получить доступ к ним во всем приложении.

+0

thats звучит как то, что я хочу, но я до сих пор неясно, как заставить его работать, какой код я использую в java? и как настроить weblogic/netbeans с дополнительной папкой, чтобы посмотреть? – f1wade

Смежные вопросы