web-dev-qa-db-fra.com

Utilisation de fichiers de propriétés externes dans weblogic

Je travaille sur le déploiement d'une application J2ee que j'avais déjà déployée dans JBOSS dans Weblogic 10.3.1.0. Je rencontre un problème avec les fichiers de propriétés externes. Dans Jboss, je peux simplement placer les fichiers de propriétés dans $ JBOSS_HOME/server/default/conf. Ils sont chargés dans le chemin de classe du système et je peux y accéder sans aucun problème. J'ai pu placer des bibliothèques partagées dans $ MIDDLEWAREHOME/user_projects/domains/mydomain/lib et elles ont été chargées dans le chemin de classe du système sans aucun problème, mais je ne parviens pas à charger les fichiers de propriétés.

Est-ce que quelqu'un sait comment inclure des fichiers de propriétés externes dans Weblogic?

Merci,

16
broschb

J'ai compris cela et le faire fonctionner comme je m'y attendais. J'ai d'abord essayé les suggestions ci-dessus. Si j'ajoutais un dossier à mon chemin de classe ou si je mettais les fichiers de propriétés dans un dossier de mon chemin de classe, les fichiers JAR du fichier étaient récupérés, mais pas les fichiers de propriétés. Si je mets mes fichiers de propriétés dans un fichier jar et que je les mets dans un dossier de mon classpath, tout a fonctionné. Mais je ne voulais pas avoir mes fichiers jar chaque fois qu’une modification était apportée. Les travaux suivants dans mon env.

Si je place les fichiers de propriétés dans% WEBLOGIC_HOME%/user_projects/domains/MYDOMAIN, ils sont alors récupérés sans avoir à être placés dans un fichier jar.

14
broschb

Il y a moyen de lire le fichier de propriétés en Java à partir du chemin de classe weblogic

Un (fichier de propriétés situé dans le domaine weblogic): déposez le fichier de propriétés dans le répertoire du domaine. De cette façon, le fichier de propriétés est ajouté automatiquement au chemin de classe weblogic et nous pouvons lire à partir de Java en utilisant resourceAsStream.

Deux (fichier de propriétés d'un emplacement défini par l'utilisateur): L'avantage de cette approche est que le fichier de propriétés peut résider en dehors du fichier JAR ou EAR et peut être modifié de manière pratique.

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

}

}
}

Dans weblogic setDomainEnv (sous bin), nous devons transmettre l'emplacement du fichier de propriétés sous la forme d'un argument -D à Java_OPTIONS.

set Java_OPTIONS =% Java_OPTIONS% -DpropFileLocation =/dev/file/properties/some.properties

J'espère que cela t'aides!

2
Rahul Thotakura

Dans weblogic, les fichiers JAR seront chargés à partir de la bibliothèque et les fichiers autres que des fichiers JAR seront chargés à partir du dossier du domaine.

2
suresh

Vous pouvez définir un répertoire sur le chemin de classe et placer votre fichier de propriétés personnalisées dans ce dossier/répertoire. Ainsi, tout le répertoire avec le fichier de propriétés sera sur classpath. Pour définir le répertoire sur le chemin de classe dans weblogic 10.3.x

  • Créez un dossier dans le dossier %DOMAIN_HOME%\config\. exemple appConfig.
  • Placez votre fichier de propriétés personnalisé (disons config.properties) dans le répertoire/dossier appConfig.
  • Modifiez le setDomainEnv.cmd (Windows) pour inclure appConfig dans le chemin de classe en définissant %DOMAIN_HOME%\config\appConfig en tant que valeur sur EXT_POST_CLASSPATH (cette variable est déjà définie dans le fichier setDomainEnv.cmd) comme suit:

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

Vous pouvez accéder à ce fichier dans votre code Java comme ci-dessous:

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

J'espère que cela t'aides.

1
net user

Bien que cela puisse demander un petit effort supplémentaire, si vous placez les fichiers dans un fichier JAR avant de les déposer dans ce répertoire lib, cela devrait fonctionner.

0
Adam Batkin

Vous pouvez consulter votre script setDomainEnv.cmd (Windows) ou setDomainEnv.sh (Unix/Linux) dans les fichiers de votre domaine et voir quels emplacements sont ajoutés dans le CLASSPATH de votre domaine. Ensuite, il vous suffit de choisir un dossier et d'y placer le fichier de propriétés. Si vous souhaitez un emplacement spécifique pour votre fichier de propriétés, éditez simplement le script.

0
victor hugo

c'était ma solution:

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
user2522715

La méthode la plus flexible consiste à utiliser les plans de déploiement weblogic et les remplacements de chargement de fichier générique.

Fichier de propriétés externe avec Weblogic

http://docs.Oracle.com/cd/E21764_01/web.1111/e13702/config.htm#DEPGD188

0
Kalpesh Soni