2009-08-07 2 views
16

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

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

Спасибо,

+0

Ниже приводится вопрос, который в основном похож на этот вопрос как на концепцию. Anwser показывает, как получить путь к домену/classpath. http://stackoverflow.com/questions/41352916/not-able-to-load-external-properties-files-with-springboot-in-weblogic/41364735#41364735 –

ответ

14

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

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

0

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

+0

Я сделал это, я поместил вновь созданный файл jar (содержащий файл свойств) в папке lib, определенной в пути к классам. Это сработало, и я подумал, что это будет, но не обязательно, чтобы нужно было jar/unjar эти файлы конфигурации, когда необходимо внести изменения. Это всего на несколько шагов лучше, чем где-либо, включая файл свойств в моем ушном файле. Пока это работает, поэтому я собираюсь пойти с ним, ища лучшее решение. – broschb

1

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

+0

Я сделал это, и я поместил файлы в папку, которая добавлена ​​в classpath, она не собирает файлы свойств. Он, однако, собирает файлы jar, которые я помещаю в тот же каталог. Я не уверен, почему файлы свойств не получают. – broschb

2

В WebLogic банков будет загружен из библиотеки, и не входящие в файлы фляги будут загружен из папки домена

+0

Должен ли я активировать это поведение где-нибудь? У меня есть новая установка разработки WebLogic 12c в Windows XP, которая не собирает upp моего logback.xml из каталога домена! –

1

Есть способы, чтобы прочитать файл свойств в 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 (под бункером) мы должны передать местоположение файла свойств в качестве аргумента -D JAVA_OPTIONS

набор JAVA_OPTIONS =% JAVA_OPTIONS% -DpropFileLocation =/DEV/файл/свойства/some.properties

Надеюсь, что это поможет!

+1

, пожалуйста, добавьте дополнительную информацию, например, пример кода для вашего ответа. –

+0

Код и подробное описание находится по ссылке. Вы имели в виду, что это должно быть опубликовано здесь ?. –

+0

Да, поскольку ссылка может быть сломана. –

0

Вы можете установить каталог в пути к классам и поместить свой файл настраиваемых свойств в этот каталог/каталог. Таким образом, весь каталог вместе с файлом свойств будет находиться в classpath. Чтобы установить каталог на пути к классам в 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"); 

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

0

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

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()); 
     } 
+0

Пожалуйста, добавьте объяснения. см. https://stackoverflow.com/help/how-to-answer – user7294900

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