wildfly: lecture des propriétés de configuration de l'annuaire
Je suis en train de lire le déploiement des informations spécifiques à partir d'un fichier de propriétés dans mon wildfly dossier de configuration. J'ai essayé ceci:
@Singleton
@Startup
public class DeploymentConfiguration {
protected Properties props;
@PostConstruct
public void readConfig() {
props = new Properties();
try {
props.load(getClass().getClassLoader().getResourceAsStream("my.properties"));
} catch (IOException e) {
//... whatever
}
}
Mais apparemment ce n'est pas de travail depuis le dossier de configuration n'est pas dans le classpath plus. Maintenant, je ne peux pas trouver un moyen facile de le faire. Mon préféré serait quelque chose comme ceci:
@InjectProperties("my.properties")
protected Properties props;
La seule solution que j'ai trouvé sur le web jusqu'à présent consiste à faire mon propre OSGi module, mais je crois qu'il doit y avoir un moyen plus facile de le faire (sans OSGi!). Quelqu'un peut me montrer comment faire?
Si le fichier est dans le WildFly dossier de configuration, puis il est mondial et pas de déploiement spécifique. C'est un peu déroutant...
peut-être que j'ai mal utilisé le terme de "déploiement spécifique". Le fichier est dans le wildfly/autonome/dossier de configuration.
Si je me souviens clairement, j'ai utilisé mes configurations dans ce dossier, et j'ai simplement en faisant Fichier("monfichier.les propriétés") résolu à ce chemin (je suppose que cela pourrait être le travail dir pour jboss)
peut-être que j'ai mal utilisé le terme de "déploiement spécifique". Le fichier est dans le wildfly/autonome/dossier de configuration.
Si je me souviens clairement, j'ai utilisé mes configurations dans ce dossier, et j'ai simplement en faisant Fichier("monfichier.les propriétés") résolu à ce chemin (je suppose que cela pourrait être le travail dir pour jboss)
OriginalL'auteur EasterBunnyBugSmasher | 2015-01-14
Vous devez vous connecter pour publier un commentaire.
Si vous voulez explicitement lire un fichier à partir du répertoire de configuration (par exemple,
$WILDFLY_HOME/standalone/configuration
oudomain/configuration
) il y a un système de propriété avec le chemin d'accès. Tout simplementSystem.getProperty("jboss.server.config.dir");
et ajouter le nom de votre fichier pour que le fichier.Vous ne serait pas le lire comme une ressource, donc...
Puis le fichier est chargé pour vous.
Aussi, depuis WildFly n'a pas été livré avec OSGi plus de support, je ne sais pas comment créer un OSGi module vous aider ici.
L'inputstream reste ouverte. ne passez pas directement pour les propriétés.charge
Vous avez raison @Wender, mais honnêtement, j'ai seulement l'intention de ce pseudo-code.
Note jboss.serveur.config.dir est pas le même que jboss.domaine.config.dir. Si votre application est le déploiement à la fois autonome et les environnements de domaine cela aura besoin de quelques ajustements.
OriginalL'auteur John Ament
Voici un exemple complet d'utilisation de seulement CDI, prises à partir de ce site.
Créer et remplir un fichier de propriétés à l'intérieur de la WildFly dossier de configuration
Ajouter un système de propriété à la WildFly fichier de configuration.
Cela va ajouter les lignes suivantes à votre fichier de configuration du serveur (standalone.xml ou domain.xml):
Créer le singleton bean de session que les charges et les magasins de l'application à l'échelle des propriétés
Créer le CDI de qualification. Nous allons utiliser cette annotation sur la Java des variables que nous souhaitons insuffler dans.
Créer le producteur de la méthode, ce qui crée l'objet à être injecté
Enfin injecter de la propriété dans l'un de vos CDI haricots
OriginalL'auteur Chris Ritchie
La chose la plus simple que vous pouvez faire est d'exécuter
standalone.sh
avec un-P
option référencement de votre fichier de propriétés (vous avez besoin d'une URLfile:/path/to/my.properties
, ou de placer le fichier dans$WILDFLY_HOME/bin
).Alors toutes les propriétés du fichier sera chargé comme des propriétés du système.
Pour l'injection de configuration des propriétés dans vos classes de l'application, ont un oeil à DeltaSpike De Configuration, qui prend en charge des propriétés différentes sources, telles que des propriétés du système, les variables d'environnement JNDI entrées et masque la source spécifique de votre application.
Sinon, pour éviter de mettre les propriétés du système (qui sera globale dans le sens d'être visible pour toutes les applications déployées à votre WildFly exemple), vous pouvez également définir une propriété personnalisée source pour DeltaSpike la lecture d'un fichier de propriétés à partir d'un lieu donné, et ces propriétés seront locale à votre demande.
WildFly lit le fichier, pas DeltaSpike - DeltaSpike lit les propriétés du système défini par WildFly. Pour lire le fichier via DeltaSpike (dernier paragraphe de ma réponse), vous devez implémenter un personnalisé DeltaSpike de configuration de la source et l'enregistrer avec DeltaSpike. Vous pouvez utiliser un chemin d'accès au fichier, pas le chemin d'accès au fichier.
merci pour l'entrée, mais un peu trop compliqué pour moi.
OriginalL'auteur Harald Wellmann
Il semble que le problème que vous essayez de résoudre, c'est de gérer différents (mais probablement similaire), les fichiers de configuration pour l'exécution de votre application dans des environnements différents (ie, la Production, l'assurance qualité, ou même de différents clients). Si c'est le cas, jetez un oeil à Jfig http://jfig.sourceforge.net/ . Il serait élimine le besoin pour le stockage des fichiers de propriétés à l'extérieur de votre classpath (mais vous avez encore le pourrait).
OriginalL'auteur Sr Bruno
OriginalL'auteur Wender