2009-08-07 10 views
16

Ich arbeite an der Bereitstellung einer J2EE-Anwendung, die ich zuvor in JBOSS in Weblogic 10.3.1.0 bereitgestellt habe. Ich stoße auf ein Problem mit externen Eigenschaftendateien. In Jboss kann ich die Eigenschaftendateien einfach in $ JBOSS_HOME/server/default/conf ablegen, und sie werden in den Klassenpfad des Systems geladen und ich kann ohne Probleme auf sie zugreifen. Ich konnte shared libraries in $ MIDDLEWAREHOME/user_projects/domains/mydomain/lib setzen und sie wurden ohne Probleme in den Systemklassenpfad geladen, aber ich kann keine Eigenschaftendateien laden.Verwenden von Dateien mit externen Eigenschaften in weblogic

Kann jemand externe Eigenschaftendateien in Weblogic einschließen?

Danke,

+0

Unten ist das die Frage, die ist dieser Frage meist konzeptionell ähnlich. Der Anwser zeigt, wie Domainpfad/Klassenpfad abgerufen wird. http://stackoverflow.com/questions/41352916/not-able-to-load-external-properties-files-with-springboot-in-weblogic/41364735#41364735 –

Antwort

14

Ich habe das herausgefunden und funktioniert so, wie ich es erwarte. Zuerst habe ich die Vorschläge wie oben versucht. Wenn ich meinem Klassenpfad einen Ordner hinzugefügt oder die Eigenschaftendateien in einen Ordner in meinem Klassenpfad eingefügt habe, wurden die JAR-Dateien in der Datei zwar aufgenommen, aber keine Eigenschaftsdateien. Wenn ich meine Eigenschaftendateien in ein Jar legte und sie in einen Ordner auf meinem Klassenpfad legte, funktionierte alles. Aber ich wollte meine Dateien nicht jedesmal kritzeln lassen, wenn eine Änderung vorgenommen wurde. Das folgende funktioniert in meinem env.

Wenn ich die Eigenschaftendateien in% WEBLOGIC_HOME%/user_projects/domains/MYDOMAIN ablege, werden sie abgeholt, ohne dass sie in einer JAR-Datei abgelegt werden müssen.

0

Obwohl es ein wenig zusätzlichen Aufwand sein kann, wenn Sie die Dateien in ein JAR setzen, bevor sie in das Verzeichnis lib fallen, das funktionieren sollte.

+0

Ich tat das, ich legte die neu erstellte JAR-Datei ((enthält meine Eigenschaftendatei) in einem lib-Ordner, der im Klassenpfad definiert ist. Das funktionierte, und ich dachte, es wäre das, aber es ist nicht ideal, diese Konfigurationsdateien krachen zu müssen, wenn eine Änderung vorgenommen werden muss. Das ist nur ein paar Schritte besser, als irgendwo die Eigenschaftendatei in meine Ear-Datei aufzunehmen. Für jetzt funktioniert es, also werde ich mit ihm gehen, während ich nach einer besseren Lösung suche. – broschb

1

Sie können Ihr setDomainEnv.cmd (Windows) - oder setDomainEnv.sh (Unix/Linux) -Skript in Ihren Domänendateien anzeigen und sehen, welche Standorte im CLASSPATH für Ihre Domäne hinzugefügt wurden. Wählen Sie dann einfach einen Ordner und legen Sie die Eigenschaftendatei dort ab. Wenn Sie einen bestimmten Speicherort für Ihre Eigenschaftendatei haben möchten, bearbeiten Sie einfach das Skript.

+0

Ich habe das getan, und ich lege die Dateien in einen Ordner, der zu Classpath hinzugefügt wird, es nimmt keine Eigenschaftendateien auf. Es nimmt jedoch die Jar-Dateien auf, die ich in dasselbe Verzeichnis gelegt habe. Ich bin mir nicht sicher, warum die Eigenschaften-Dateien nicht abgeholt werden. – broschb

2

In weblogic Gläser werden aus der lib und die nicht JAR-Dateien geladen werden, werden aus der Domain-Ordner

+0

Muss ich dieses Verhalten irgendwo aktivieren? Ich habe eine neue WebLogic 12c-Entwicklungsinstallation unter Windows XP ausgeführt, die nicht meine logback.xml aus dem Domain-Verzeichnis auswählt! –

1

Es gibt Möglichkeiten geladen werden, um Eigenschaften von WebLogic Classpath-Datei in Java lesen

One (Properties-Datei befindet in der Weblogic-Domäne): Legen Sie die Eigenschaftendatei im Domänenverzeichnis ab. Auf diese Weise wird die Eigenschaftendatei automatisch dem Klassenpfad weblogic hinzugefügt und wir können mit Hilfe von resourceAsStream aus Java lesen.

Zwei (Eigenschaftendatei von einem benutzerdefinierten Speicherort): Der Vorteil dieser Methode 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 WebLogic setDomainEnv (unter ist) müssen wir die Lage der Immobilie Datei als Argument -D zu JAVA_OPTIONS

Satz JAVA_OPTIONS =% JAVA_OPTIONS% -DpropFileLocation =/dev/file/passieren properties/some.properties

Hoffe, das hilft!

+1

fügen Sie bitte weitere Informationen wie Codebeispiel für Ihre Antwort hinzu. –

+0

Code und ausführliche Erklärung ist im Link. Meinst du, es hätte stattdessen hier gepostet werden sollen? –

+0

ja, da link vielleicht irgendwann kaputt sein kann. –

0

Sie können ein Verzeichnis für den Klassenpfad festlegen und Ihre benutzerdefinierte Eigenschaftendatei in diesem Ordner/Verzeichnis speichern. Das bedeutet, dass sich das gesamte Verzeichnis zusammen mit der Eigenschaftendatei im Klassenpfad befindet. Um das Verzeichnis auf dem Classpath in weblogic 10.3.x

  • Erstellen Sie einen Ordner in %DOMAIN_HOME%\config\ Ordner festgelegt.Beispiel appConfig.
  • Platzieren Sie Ihre benutzerdefinierte Eigenschaftendatei (z. B.) in appConfig Verzeichnis/Ordner.
  • ändern Sie das setDomainEnv.cmd (Windows) appConfig im Classpath enthalten von %DOMAIN_HOME%\config\appConfig als Wert EXT_POST_CLASSPATH Stellgröße wie unten (diese Variablen bereits in der setDomainEnv.cmd-Datei definiert ist):

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

können Sie Greifen Sie auf diese Datei in Ihrem Java-Code wie folgt zu:

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

Hoffe, das hilft.

0

, dass meine Lösung war zu verwenden:

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

Bitte Erklärung hinzufügen. siehe https://stackoverflow.com/help/how-to-answer – user7294900

Verwandte Themen