Ich arbeite an der Bereitstellung einer J2ee-Anwendung, die ich zuvor in JBOSS in Weblogic 10.3.1.0 bereitgestellt habe. Ich habe ein Problem mit externen Eigenschaftendateien. In Jboss kann ich die Eigenschaftendateien einfach in $ JBOSS_HOME/server/default/conf ablegen, und sie werden in den Systemklassenpfad geladen, und ich kann problemlos darauf zugreifen. Ich konnte gemeinsam genutzte Bibliotheken in $ MIDDLEWAREHOME/user_projects/domains/mydomain/lib ablegen und sie wurden ohne Probleme in den Systemklassenpfad geladen, aber ich kann keine Eigenschaftendateien laden.
Weiß jemand, wie externe Eigenschaftendateien in Weblogic eingeschlossen werden?
Vielen Dank,
Ich habe das herausgefunden und es funktioniert so, wie ich es erwarten würde. Zuerst habe ich die Vorschläge wie oben ausprobiert. Wenn ich meinem Klassenpfad einen Ordner hinzufügte oder die Eigenschaftendateien in einen Ordner in meinem Klassenpfad legte, wurden die Gläser in der Datei aufgenommen, aber keine Eigenschaftendateien. Wenn ich meine Eigenschaftendateien in ein Glas lege und sie in einen Ordner auf meinem Klassenpfad lege, hat alles funktioniert. Aber ich wollte nicht, dass meine Dateien bei jeder Änderung in ein Glas gegeben werden. Die folgenden Arbeiten in meinem env.
Wenn ich die Eigenschaftendateien in% WEBLOGIC_HOME%/user_projects/domains/MYDOMAIN platziere, werden sie abgeholt, ohne dass sie in eine JAR-Datei gestellt werden müssen.
Es gibt Möglichkeiten, die Eigenschaftendatei in Java aus dem Weblogic-Klassenpfad zu lesen
Eins (Eigenschaftendatei in der Weblogic-Domäne): Legen Sie die Eigenschaftendatei im Domänenverzeichnis ab. Auf diese Weise wird die Eigenschaftendatei automatisch zum Weblogic-Klassenpfad hinzugefügt und wir können mit resourceAsStream aus Java lesen.
Zwei (Eigenschaftendatei von einem benutzerdefinierten Speicherort): Der Vorteil dieses Ansatzes besteht darin, dass sich die Eigenschaftendatei außerhalb der JAR- oder EAR-Datei befinden und bequem geändert werden kann.
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();
}
}
}
In der Weblogik setDomainEnv (unter bin) müssen wir den Speicherort der Eigenschaftendatei als -D-Argument an Java_OPTIONS übergeben
setzen Sie Java_OPTIONS =% Java_OPTIONS% -DpropFileLocation =/dev/file/properties/some.properties
Hoffe das hilft!
In Weblogic werden JAR-Dateien aus der Bibliothek und die Nicht-JAR-Dateien aus dem Domänenordner geladen
Sie können ein Verzeichnis im Klassenpfad festlegen und Ihre benutzerdefinierte Eigenschaftendatei in diesem Ordner/Verzeichnis ablegen. Damit befindet sich das gesamte Verzeichnis zusammen mit der Eigenschaftendatei im Klassenpfad. So legen Sie das Verzeichnis im Klassenpfad in Weblogic 10.3.x fest
%DOMAIN_HOME%\config\
. Beispiel appConfig
.config.properties
) im Verzeichnis/Ordner appConfig
.Ändern Sie den setDomainEnv.cmd
(Windows), um appConfig
in den Klassenpfad aufzunehmen, indem Sie %DOMAIN_HOME%\config\appConfig
als Wert auf EXT_POST_CLASSPATH
setzen (diese Variable ist bereits in der setDomainEnv.cmd
-Datei definiert).
set EXT_POST_CLASSPATH=%EXT_POST_CLASSPATH%;%DOMAIN_HOME%\config\appConfig
Sie können auf diese Datei in Ihrem Java-Code wie folgt zugreifen:
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream ("config.properties");
Properties prop = new Properties();
prop.load(inputStream);
String value = prop.getProperty("key");
Hoffe das hilft.
Obwohl es ein wenig aufwändig sein kann, sollte dies funktionieren, wenn Sie die Dateien in eine JAR-Datei kopieren, bevor Sie sie in das Verzeichnis lib
ablegen.
Sie können Ihr setDomainEnv.cmd
(Windows) - oder setDomainEnv.sh
(Unix/Linux) -Skript in Ihren Domänendateien einsehen und feststellen, welche Speicherorte in der KLASSE für Ihre Domäne hinzugefügt wurden. Wählen Sie dann einfach einen Ordner aus und platzieren Sie die Eigenschaftendatei dort. Wenn Sie einen bestimmten Speicherort für Ihre Eigenschaftendatei wünschen, bearbeiten Sie einfach das Skript.
das war meine lösung:
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());
}
Die flexibelste Möglichkeit ist die Verwendung von Weblogic-Bereitstellungsplänen und Überschreibungen beim Laden generischer Dateien
Externe Eigenschaftendatei mit Weblogic
http://docs.Oracle.com/cd/E21764_01/web.1111/e13702/config.htm#DEPGD188