IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Wildfly/JBoss Java Discussion :

Externalisation .properties jboss-as-7.1.1.Final Brontes


Sujet :

Wildfly/JBoss Java

  1. #1
    Membre régulier Avatar de thomas9501
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Décembre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 102
    Points : 114
    Points
    114
    Par défaut Externalisation .properties jboss-as-7.1.1.Final Brontes
    Bonjour à tous,

    J'ai un petit souci avec l'externalisation du fichier .properties de mon application.
    En effet, je ne sais pas comment faire et toutes les techniques que je trouve sur le net ne marche pas dans mon cas.
    Je précise que cela fonctionne très bien lorsque mon fichier .properties est inclus à l'application (au war).

    Mon code java qui récupère le fichier .properties :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    	/**
             * @param pPropertiesFilePath
             *            that may be : 
             *               - absolute in the file system including .properties extension
             *               - relative in the classpath and without .properties extension
             * @return a Hashtable with the keys/values of the properties file
             */
    	public Hashtable getValuesFromProperties(String pPropertiesFilePath) throws FileNotFoundException {
    		Hashtable results = new Hashtable();
    		foundInFileSystem = false;
    		foundInClassPath = false;
     
    		// Look first in the file system
    		try {
    			Properties sysfileProperties = new Properties();
    			sysfileProperties.load(new FileInputStream(pPropertiesFilePath));
     
    			foundInFileSystem = true;
    			results.putAll(sysfileProperties);
    		} catch (FileNotFoundException e) {
    			// May safety be ignored, try next to read from classpath
    		} catch (IOException e) {
    			// May safety be ignored, try next to read from classpath
    		}
     
    		// If not found, look in the classpath
    		if (!foundInFileSystem) {
    			try {
    				ResourceBundle classpathBundle = ResourceBundle.getBundle(pPropertiesFilePath);
     
    				foundInClassPath = true;
    				Enumeration enumKeys = classpathBundle.getKeys();
    				while (enumKeys.hasMoreElements()) {
    					String key = (String) enumKeys.nextElement();
    					results.put(key, classpathBundle.getString(key));
    				}
     
    			} catch (MissingResourceException e) {
    				// May safety be ignored, appropriate exception will be thrown later
    			}
    		}
     
    		if (foundInFileSystem || foundInClassPath) {
    			return results;
    		} else {
    			throw new FileNotFoundException("Following file was not found neither in filesystem nor in classpath : " + pPropertiesFilePath);
    		}
    	}
    Cette méthode est appelée avec le paramètre suivant :
    String properties = "com/boite/projet/app";
    où "com", "boite" et "projet" sont des répertoires inclus et "app" le fichier .properties (app.properties).

    Merci d'avance pour votre aide.


    Thomas
    On n'est pas le meilleur quand on le croit mais quand on le sait !!

  2. #2
    Membre régulier Avatar de thomas9501
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Décembre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 102
    Points : 114
    Points
    114
    Par défaut
    J'ai finalement réussi avec la méthode indiqué ici :
    https://community.jboss.org/wiki/How...InTheClasspath

    A savoir :
    1. Create a new module for your configuration files
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jboss-as-7/modules/com/yourcompany/configuration/main/module.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="UTF-8"?>  
    <module xmlns="urn:jboss:module:1.1" name="com.mycompany.configuration">  
        <resources>  
            <resource-root path="."/>  
        </resources>  
    </module>
    2. Add your properties files to the module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    jboss-as-7/
       modules/
          com/
             yourcompany/
                configuration/
                   main/
                     module.xml
                     settings.properties
                     other-settings.xml
    3. Add your module to your application classpath in a jboss-deployment-structure.xml file
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="UTF-8"?>  
    <jboss-deployment-structure>  
      <deployment>  
        <dependencies>  
          <module name="com.mycompany.configuration" />  
        </dependencies>  
      </deployment>  
    </jboss-deployment-structure>
    This file must be placed either in the META-INF directory of your EAR file or the WEB-INF directory of your WAR file. See Class Loading in AS7 for more information.

    4. OR add your module to your application classpath using a MANIFEST.MF entry
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Manifest-Version: 1.0
    Dependencies: com.mycompany.configuration
    5. Load a properties file from the classloader in your application
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InputStream settingsStream = this.getClass().getClassLoader().getResourceAsStream("settings.properties");
    On n'est pas le meilleur quand on le croit mais quand on le sait !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Properties]Externalisation des confs
    Par Thomas_ats dans le forum Spring
    Réponses: 1
    Dernier message: 16/09/2009, 16h59
  2. [Integration] externaliser log4j.properties pour chaque environnement
    Par matjap dans le forum Spring
    Réponses: 3
    Dernier message: 19/06/2009, 17h12
  3. Probleme de detecter un fichier properties par Jboss?
    Par KING_OF_GRACELAND dans le forum Wildfly/JBoss
    Réponses: 2
    Dernier message: 26/05/2009, 15h35
  4. [build.properties] configurer le jboss.dir
    Par Widiwi dans le forum Maven
    Réponses: 8
    Dernier message: 01/06/2007, 16h20
  5. Réponses: 4
    Dernier message: 14/04/2005, 13h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo