2009-08-07 16 views
16

Pracuję nad wdrożeniem aplikacji J2ee, którą wcześniej wdrażałem w JBOSS w Weblogic 10.3.1.0. Występuje problem z zewnętrznymi plikami właściwości. W Jboss mogę po prostu umieścić pliki właściwości w katalogu $ JBOSS_HOME/server/default/conf, i są one ładowane do systemowej ścieżki klas i uzyskuję do nich dostęp bez żadnych problemów. Udało mi się umieścić wspólne biblioteki w $ MIDDLEWAREHOME/user_projects/domains/mydomain/lib i zostały one załadowane do systemowej ścieżki klas bez żadnych problemów, ale nie mogę załadować plików właściwości.Używanie zewnętrznych plików właściwości w weblogic

Czy ktoś wie, jak włączyć zewnętrzne pliki właściwości w Weblogic?

Dzięki,

+0

Poniżej jest pytanie, które jest w większości podobny do tego pytania jako koncepcja mądra. Anwser pokazuje, jak uzyskać ścieżkę do domeny/ścieżkę klasy. http://stackoverflow.com/questions/41352916/notable-to-load-external-properties-files-with-springboot-in-weblogic/41364735#41364735 –

Odpowiedz

14

Wymyśliłem to i sprawiłem, że działało tak, jak bym się spodziewał. Najpierw spróbowałem sugestii jak wyżej. Jeśli dodałem folder do mojej ścieżki klasy lub umieściłem pliki właściwości w folderze w ścieżce klas, słoiki w pliku zostały pobrane, ale nie pliki właściwości. Jeśli umieściłem pliki właściwości w słoiku i umieściłem je w folderze w ścieżce klas, wszystko działało. Ale nie chciałem mieć plików za każdym razem, gdy dokonywano zmiany. Następujące prace w moim środowisku.

Jeśli umieściłem pliki właściwości w% WEBLOGIC_HOME%/user_projects/domains/MYDOMAIN, to są one pobierane, bez konieczności umieszczania ich w pliku JAR.

0

Chociaż może to być trochę więcej wysiłku, jeśli umieścić pliki do słoika przed zrzuceniem ich do tego katalogu lib, że powinno działać.

+0

Zrobiłem to, wstawiłem nowo utworzony plik jar (zawierające mój plik właściwości) w folderze lib zdefiniowanym w ścieżce klas. To zadziałało i pomyślałem, że tak, ale nie jest idealnym rozwiązaniem, aby pliki jar konfigurować, gdy trzeba dokonać zmiany. Jest to tylko kilka kroków lepiej niż dołączenie pliku właściwości do pliku ear. Na razie działa, więc pójdę z nim, szukając lepszego rozwiązania. – broschb

1

Możesz przejrzeć swój skrypt setDomainEnv.cmd (Windows) lub setDomainEnv.sh (Unix/Linux) w swoich plikach domeny i sprawdzić, jakie lokalizacje zostały dodane w zmiennej CLASSPATH dla Twojej domeny. Następnie wybierz jeden folder i umieść tam plik właściwości, jeśli chcesz określić konkretną lokalizację dla pliku właściwości, po prostu edytuj skrypt.

+0

Zrobiłem to i umieściłem pliki w folderze dodanym do ścieżki klasy, nie przechwytuje żadnych plików właściwości. Wyszukuje jednak pliki jar, które umieszczam w tym samym katalogu. Nie jestem pewien, dlaczego pliki właściwości nie są pobierane. – broschb

2

W WebLogic słoiki zostaną załadowane z lib i non pliki jar zostaną załadowane z folderu domeny

+0

Czy muszę aktywować to zachowanie gdzieś? Mam świeżą instalację programistyczną WebLogic 12c w systemie Windows XP, która nie pobiera mojego pliku logback.xml z katalogu domeny! –

1

Istnieją sposoby, aby odczytać pliku właściwości w Javie od weblogic ścieżce klasy

One (plik Właściwości się w domenie weblogicznej): Usuń plik właściwości z katalogu Domain. W ten sposób plik właściwości zostanie automatycznie dodany do ścieżki klasy blogu i możemy odczytać z Java przy użyciu resourceAsStream.

Dwa (Plik właściwości z lokalizacji zdefiniowanej przez użytkownika): Zaletą takiego podejścia jest to, że plik właściwości może znajdować się poza plikiem JAR lub EAR i można go wygodnie modyfikować.

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

} 

} 
} 

W setDomainEnv weblogic (w pojemniku), to należy zdać położenia pliku właściwości jako -D do JAVA_OPTIONS

zestaw JAVA_OPTIONS =% JAVA_OPTIONS% -DpropFileLocation =/odchylenie/Plik/properties/some.properties

Mam nadzieję, że to pomoże!

+1

proszę dodać więcej informacji, takich jak przykład kodu odpowiedzi. –

+0

Kod i szczegółowe wyjaśnienie znajduje się w łączu. Miałeś na myśli to, że zamiast tego powinno być tutaj zamieszczone ?. –

+0

tak, ponieważ link może kiedyś zostać zerwany. –

0

Możesz ustawić katalog na ścieżce klasy i Umieść plik właściwości niestandardowych w tym folderze/katalogu. Tak więc cały katalog wraz z plikiem właściwości będzie znajdował się w ścieżce klas. Aby ustawić katalog na ścieżce klasy w WebLogic 10.3.x

  • Utwórz folder w %DOMAIN_HOME%\config\ folderu.przykład appConfig.
  • Umieść swój plik właściwości niestandardowej (Powiedzmy: config.properties) w katalogu/folderze appConfig.
  • Modyfikacja setDomainEnv.cmd (Windows) w celu włączenia appConfig w ścieżce klasy ustawiając %DOMAIN_HOME%\config\appConfig jako wartość do EXT_POST_CLASSPATH (zmienna ta jest już zdefiniowana w pliku setDomainEnv.cmd) zmienny jak poniżej:

    set EXT_POST_CLASSPATH=%EXT_POST_CLASSPATH%;%DOMAIN_HOME%\config\appConfig 
    

Można dostęp do tego pliku w twoim kodzie java, jak poniżej:

InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream ("config.properties"); 
    Properties prop = new Properties(); 
    prop.load(inputStream); 
    String value = prop.getProperty("key"); 

Mam nadzieję, że to pomoże.

0

to było moje rozwiązanie:

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

Proszę dodać wyjaśnienie. zobacz https://stackoverflow.com/help/how-to-answer – user7294900

Powiązane problemy