Использование внешних файлов свойств в weblogic
Я работаю над развертыванием приложения J2ee, которое я ранее развертывал в JBOSS в Weblogic 10.3.1.0. Я сталкиваюсь с проблемой с внешними файлами свойств. В Jboss я могу просто поместить файлы свойств в $JBOSS_HOME/server/default/conf, и они загружаются в путь к системе, и я могу получить к ним доступ без каких-либо проблем. Я смог поместить разделяемые библиотеки в $MIDDLEWAREHOME/user_projects/domains/mydomain/lib, и они были без проблем загружены в системный путь класса, но я не могу загрузить файлы свойств.
Кто-нибудь знает, как включать внешние файлы свойств в Weblogic?
Спасибо,
Ответы
Ответ 1
Я понял это и работаю так, как я ожидал. Сначала я попробовал предложения, как указано выше. Если я добавил папку в свой путь к классам или поместил файлы свойств в папку на моем пути к классам, банки в файле были отобраны, но не были бы файлами свойств. Если я поместил свои файлы свойств в банку и поместил их в папку на моем пути к классам, все сработало. Но я не хотел иметь jar мои файлы каждый раз, когда было сделано изменение. Следующие работы в моем env.
Если я поместил файлы свойств в% WEBLOGIC_HOME%/user_projects/domains/MYDOMAIN, тогда они получаются, не помещая их в файл jar.
Ответ 2
В блоках weblogic будут загружены из библиотеки lib, а файлы non jar будут загружены из папки домена
Ответ 3
Вы можете посмотреть ваши setDomainEnv.cmd
(Windows) или setDomainEnv.sh
(Unix/Linux) script в своих файлах домена и посмотреть, какие местоположения добавлены в CLASSPATH для вашего домена. Затем просто выберите одну папку и поместите туда файл свойств, если вы хотите, чтобы определенное место для вашего файла свойств просто редактировало script.
Ответ 4
Есть способы прочитать файл свойств в 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 для JAVA_OPTIONS
установить JAVA_OPTIONS =% JAVA_OPTIONS% -DpropFileLocation =/dev/file/properties/some.properties
Надеюсь, это поможет!
Ответ 5
Хотя это может быть немного дополнительным усилием, если вы поместите файлы в JAR, прежде чем отбрасывать их в каталог lib
, который должен работать.
Ответ 6
Вы можете установить каталог в пути к классам и поместить свой файл настраиваемых свойств в этот каталог/каталог. Таким образом, весь каталог вместе с файлом свойств будет находиться в classpath.
Чтобы установить каталог в пути к классам в weblogic 10.3.x
- Создайте папку в папке
%DOMAIN_HOME%\config\
. пример appConfig
.
- Поместите свой файл свойств (Let say
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");
Надеюсь, что это поможет.
Ответ 7
Самый гибкий способ - использовать планы развертывания weblogic и переопределения общей загрузки файлов.
Файл внешних свойств с Weblogic
http://docs.oracle.com/cd/E21764_01/web.1111/e13702/config.htm#DEPGD188
Ответ 8
Это было мое решение:
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());
}