2009-08-07 12 views
16

Sto lavorando sulla distribuzione di un'applicazione J2EE che ho già stato schierando in JBoss in Weblogic 10.3.1.0. Ho riscontrato un problema con i file delle proprietà esterne. In Jboss posso semplicemente mettere i file delle proprietà in $ JBOSS_HOME/server/default/conf, e sono caricati sul classpath di sistema e posso accedervi senza problemi. Sono stato in grado di mettere le librerie condivise in $ MIDDLEWAREHOME/user_projects/domini/mydomain/lib e sono stati caricati nel classpath di sistema senza problemi, ma non sono in grado di caricare file di proprietà.Uso delle proprietà esterni i file in weblogic

Qualcuno sa come includere file di proprietà esterni in Weblogic?

Grazie,

+0

riportano di seguito le la domanda che è per lo più simile a questa domanda come un concetto saggio. L'anwser mostra come ottenere il percorso del dominio/classpath. http://stackoverflow.com/questions/41352916/not-able-to-load-external-properties-files-with-springboot-in-weblogic/41364735#41364735 –

risposta

14

ho capito questo e farlo lavorare il modo in cui mi sarei aspettato. Per prima cosa ho provato i suggerimenti come sopra. Se ho aggiunto una cartella al mio classpath, o ho messo i file delle proprietà in una cartella sul mio classpath, i vasi nel file sono stati prelevati, ma non i file delle proprietà. Se metto i miei file di proprietà in un barattolo e li metto in una cartella sul mio percorso di classe, tutto ha funzionato. Ma non volevo avere jar i miei file ogni volta che veniva apportata una modifica. I seguenti lavori nel mio ambiente

Se inserisco i file delle proprietà in% WEBLOGIC_HOME%/user_projects/domains/MYDOMAIN, vengono raccolti, senza dover essere inseriti in un file jar.

0

Anche se può essere un piccolo sforzo in più, se si mette i file in un JAR prima di cadere in tale directory lib, che dovrebbe funzionare.

+0

Ho fatto questo, ho messo il file jar appena creato (contenente il mio file delle proprietà) in una cartella lib definita sul classpath. Questo ha funzionato, e ho pensato che sarebbe, ma non è l'ideale di dover jar/unjar questi file di configurazione quando è necessario apportare una modifica. Questo è solo un paio di passi meglio di includere il file delle proprietà nel mio file ear da qualche parte. Per ora funziona, quindi ho intenzione di andare con esso mentre si cerca una soluzione migliore. – broschb

1

È possibile esaminare lo script setDomainEnv.cmd (Windows) o setDomainEnv.sh (Unix/Linux) nei file di dominio e vedere quali posizioni vengono aggiunte nel CLASSPATH per il proprio dominio. Quindi basta scegliere una cartella e posizionare il file delle proprietà lì, se si desidera una posizione specifica per il proprio file delle proprietà basta modificare lo script.

+0

L'ho fatto e ho inserito i file in una cartella che è stata aggiunta a classpath, non sta raccogliendo alcun file di proprietà. Sta comunque raccogliendo i file jar che ho inserito nella stessa directory. Non sono sicuro del motivo per cui i file delle proprietà non vengono rilevati. – broschb

2

in vasetti di WebLogic sarà caricato dal lib ei file non jar sarà caricato dalla cartella dominio

+0

Devo attivare questo comportamento da qualche parte? Ho una nuova installazione di sviluppo di WebLogic 12c su Windows XP, che non sta prelevando il mio logback.xml dalla directory del dominio! –

1

ci sono modi per leggere file di proprietà in Java dal classpath weblogic

One (file Properties si trova nel dominio weblogic): rilascia il file delle proprietà all'interno della directory del dominio. In questo modo il file delle proprietà viene aggiunto automaticamente al classpath weblogic e possiamo leggere da Java usando resourceAsStream.

Due (file delle proprietà da una posizione definita dall'utente): il vantaggio con questo approccio è che il file delle proprietà può risiedere all'esterno del file JAR o EAR e può essere modificato convenientemente.

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

} 

} 
} 

Nel setDomainEnv weblogic (sotto bin) abbiamo bisogno di passare alla posizione del file di proprietà come argomento -D per JAVA_OPTIONS

set JAVA_OPTIONS =% JAVA_OPTIONS% -DpropFileLocation =/dev/file/proprietà/some.properties

Spero che questo aiuti!

+1

per favore aggiungi ulteriori informazioni come esempio di codice per la tua risposta. –

+0

Il codice e la spiegazione dettagliata sono nel link. Volevi dire che avrebbe dovuto essere pubblicato qui? –

+0

sì, poiché il collegamento potrebbe essere rotto un giorno. –

0

È possibile impostare una directory del percorso di classe e posiziona il file vostre proprietà personalizzate in quella cartella/directory. In questo modo, l'intera directory insieme al file delle proprietà sarà in classpath. per impostare la directory nel classpath in weblogic 10.3.x

  • Creare una cartella nella cartella %DOMAIN_HOME%\config\.esempio appConfig.
  • Inserire il file delle proprietà personalizzate (diciamo config.properties) nella directory/cartella appConfig.
  • Modificare il setDomainEnv.cmd (Windows) per includere appConfig nel classpath impostando %DOMAIN_HOME%\config\appConfig come valore da EXT_POST_CLASSPATH (questa variabile è già definito nel file setDomainEnv.cmd) variabile come di seguito:

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

Puoi accedi a quel file nel tuo codice java come di seguito:

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

Spero che questo aiuti.

0

che era la mia soluzione:

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

Per favore aggiungi una spiegazione. vedere https://stackoverflow.com/help/how-to-answer – user7294900

Problemi correlati