Использование внешних файлов свойств в weblogic

Я работаю над развертыванием приложения J2ee, которое я ранее развертывал в JBOSS, в Weblogic 10.3.1.0. У меня возникла проблема с файлами внешних свойств. В Jboss я могу просто поместить файлы свойств в $JBOSS_HOME/server/default/conf, и они загружаются в системный путь к классам, и я могу получить к ним доступ без каких-либо проблем. Я смог поместить общие библиотеки в $MIDDLEWAREHOME/user_projects/domains/mydomain/lib, и они были загружены в системный путь к классам без каких-либо проблем, но я не могу загрузить файлы свойств.

Кто-нибудь знает, как включить файлы внешних свойств в Weblogic?

Спасибо,


person broschb    schedule 07.08.2009    source источник
comment
Ниже приведен вопрос, который в основном похож на этот вопрос с точки зрения концепции. Ответ показывает, как получить путь к домену/путь к классу. stackoverflow.com/questions/41352916/   -  person S Boot    schedule 28.12.2016


Ответы (8)


Я понял это, и это работает так, как я ожидал. Сначала я попробовал предложения, как указано выше. Если я добавил папку в свой путь к классам или поместил файлы свойств в папку в моем пути к классам, банки в файле были подобраны, но не файлы свойств. Если я поместил свои файлы свойств в банку и поместил их в папку в моем пути к классам, все сработало. Но я не хотел иметь jar-файлы каждый раз, когда вносились изменения. Следующее работает в моей среде.

Если я помещу файлы свойств в %WEBLOGIC_HOME%/user_projects/domains/MYDOMAIN, они будут выбраны без необходимости помещения в файл jar.

person broschb    schedule 12.08.2009

В weblogic jar-файлы будут загружены из библиотеки, а файлы, отличные от jar, будут загружены из папки домена.

person suresh    schedule 18.02.2013
comment
Должен ли я где-то активировать это поведение? У меня есть новая установка разработки WebLogic 12c в Windows XP, которая не загружает мой файл logback.xml из каталога домена! - person Matthias B; 18.04.2013

Есть способы прочитать файл свойств в Java из пути к классам weblogic.

Один (файл свойств расположен в домене weblogic): поместите файл свойств в каталог домена. Таким образом, файл свойств автоматически добавляется в путь к классам weblogic, и мы можем читать из Java с помощью resourceAsStream.

Два (файл свойств из расположения, определенного пользователем). Преимущество этого подхода заключается в том, что файл свойств может находиться вне файла 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);

    //Note that the propFilePath is a -Dparam defined below in the setDomainEnv
    prop.load(iStream);
    prop.getProperty(“dbuser”);

  } catch (FileNotFoundException e) {

    e.printStackTrace();

  } catch (IOException e) {

    e.printStackTrace();

  }
}
}

В weblogic setDomainEnv (под bin) => нам нужно передать местоположение файла свойств как -D argument в JAVA_OPTIONS

set JAVA_OPTIONS=%JAVA_OPTIONS% -DpropFileLocation =/dev/file/properties/some.properties
person Rahul Thotakura    schedule 25.03.2014
comment
пожалуйста, добавьте больше информации, например, пример кода для вашего ответа. - person Alex Choroshin; 26.03.2014
comment
Код и подробное объяснение по ссылке. Вы имели в виду, что это должно было быть размещено здесь? - person Rahul Thotakura; 26.03.2014

Вы можете установить каталог в пути к классам и поместить свой файл пользовательских свойств в эту папку/каталог. Таким образом, весь каталог вместе с файлом свойств будет находиться в пути к классам. Чтобы установить каталог в пути к классам в weblogic 10.3.x

  • Создайте папку в папке %DOMAIN_HOME%\config\. пример appConfig.
  • Поместите свой пользовательский файл свойств (скажем, config.properties) в каталог/папку appConfig.
  • Измените setDomainEnv.cmd (Windows), чтобы включить appConfig в путь к классам, установив %DOMAIN_HOME%\config\appConfig в качестве значения для переменной EXT_POST_CLASSPATH (эта переменная уже определена в файле setDomainEnv.cmd), как показано ниже:

    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");

Надеюсь это поможет.

person net user    schedule 11.04.2015

Самый гибкий способ — использовать планы развертывания weblogic и общие переопределения загрузки файлов.

Внешний файл свойств с Weblogic

http://docs.oracle.com/cd/E21764_01/web.1111/e13702/config.htm#DEPGD188

person Kalpesh Soni    schedule 07.03.2017

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

person Adam Batkin    schedule 07.08.2009
comment
Я сделал это, я поместил только что созданный файл jar (содержащий файл моих свойств) в папку lib, определенную в пути к классам. Это сработало, и я полагал, что так и будет, но не идеально иметь jar/unjar эти файлы конфигурации, когда необходимо внести изменения. Это всего на несколько шагов лучше, чем включение файла свойств где-нибудь в файл моего уха. На данный момент это работает, поэтому я собираюсь использовать его в поисках лучшего решения. - person broschb; 08.08.2009

Вы можете просмотреть скрипт setDomainEnv.cmd (Windows) или setDomainEnv.sh (Unix/Linux) в файлах вашего домена и посмотреть, какие местоположения добавлены в CLASSPATH для вашего домена. Затем просто выберите одну папку и поместите туда файл свойств, если вы хотите указать определенное место для вашего файла свойств, просто отредактируйте скрипт.

person victor hugo    schedule 07.08.2009
comment
Я сделал это и поместил файлы в папку, добавленную в путь к классам, она не собирает никаких файлов свойств. Однако он собирает файлы jar, которые я помещаю в тот же каталог. Я не уверен, почему файлы свойств не загружаются. - person broschb; 08.08.2009

это было мое решение:

ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

        InputStream is = null;

        String urlExte = System.getenv("DOMAIN_HOME")+"/properties/SmsBalanceadoWS/";


        org.springframework.core.io.Resource resource = ctx.getResource( "file:"+urlExte+"/application.properties");
        try {
            is = resource.getInputStream();
        } catch (IOException e) {
            LOGGER.debug("ERROR"+ e.getMessage());
        }
person Yurifull    schedule 21.11.2017
comment
Пожалуйста, добавьте объяснение. см. stackoverflow.com/help/how-to-answer. - person user7294900; 21.11.2017
comment
он пытается получить значение переменной среды ОС domain_home и предполагает, что там существует папка свойств, к сожалению, я не вижу, чтобы она устанавливалась в моем jvm, но я вижу, что user.dir установлен в /opt/oracle/config/domains/abcd где abcd — мое доменное имя - person Kalpesh Soni; 09.04.2018