Les variables d'environnement système dans la Jetée de l'application
Comment configurer les variables d'environnement système à l'intérieur d'une Jetée application?
par exemple Pour la connexion de base de données de détails, le mettant dans un fichier et de les vérifier dans le cvs est une mauvaise idée. Pour cette raison, l'utilisation du système de l'environnement est une façon d'aller. Alors que le système de variables d'environnement sont définies dans /etc/environments
fichier ou .bashrc/.zshrc
fichier , dans la Jetée de l'application, faire System.getenv("variable_name")
ne donne rien. Le résultat sera nul.
J'ai lu cette question: La configuration de la Jetée de l'application avec des variables d'environnement qui conclut que ce qui indique que la Jetée ne prend pas en charge System.getenv()
et même pas dans start.ini
fichier.
Et la jetée et etc de l'environnement sur ubuntu 12.10 qui dit In the jetty.sh script you can source the /etc/environment file and they will be present.
que j'ai essayé et ne suis pas les valeurs comme prévu sens qu'il m'a donné seulement la valeur null.
Si je ne peux pas utiliser la valeur par défaut System.getenv()
ou en tout .ini
fichier puis comment spécifier les informations d'identification telles que la connexion de Base de données, etc ?
Vous devez vous connecter pour publier un commentaire.
Ne supportant pas la
System.getenv()
n'est pas une Jetée chose, mais un Java chose.Il y a des tonnes de restrictions autour de
System.getenv()
et de votre environnement, ce qui rend presque inutile dans l'ensemble, mais la plus naïve et la base de test. (par exemple: multiline les valeurs ne sont pas pris en charge. multiline entrées peuvent briser l'analyse. les touches sans les valeurs ne sont pas pris en charge. les touches sans les valeurs peuvent se confondent souvent avec la touche next (suivant) lors de l'analyse. les entrées avec des caractères non US-ASCII ne sont pas pris en charge. les entrées avec des caractères de contrôle ne sont pas pris en charge.)La commune de la technique lors de l'utilisation de variables d'Environnement du Système avec les programmes Java est l'utilisation de la coquille de techniques spécifiques pour obtenir les valeurs et de les injecter dans la ligne de commande ou dans un fichier ini format de l'Embarcadère pour ensuite l'utilisation.
En fonction de votre technique, ces valeurs seraient soit de se présenter comme de la Jetée de propriétés, ou en tant que Propriétés Système Java.
Viens de créer un projet pour montrer 4 façons d'accomplir ce à
https://github.com/jetty-project/jetty-external-config
Externe Propriétés de Configuration avec ponton
Démonstration de la façon de configurer des propriétés simples qui peuvent être accessibles
par des Servlets à l'intérieur de la Jetée.
Cette démonstration montre 4 différentes façons de configurer une propriété
au moment de l'exécution, qui peut ensuite être lu par la Servlet qui s'exécute à l'intérieur de
La jetée.
Les accessoires.la guerre
C'est un simple fichier war avec un seul HttpServlet et un WEB-INF/web.xml
Voir PropsServlet.java pour plus de détails de comportement.
Venons de compiler le haut niveau et la guerre de fichiers seront placés dans l'ensemble de la démonstration de la jetée.l'emplacement des bases de ce projet.
Exemple #1: Ligne De Commande De Base
La
/base-command-line
projet contient une simplestart.ini
qui commence jetée sur le port 9090, et déploie la webapp. aucune configuration supplémentaire n'est effectué par la configuration du disque.Si vous pouvez le démarrer comme si ...
vous verrez qu'il a mis en place et déployé à l'
/props
chemin de contexte.De là, vous pouvez tester pour les propriétés de la servlet via l'outillage comme
wget
oucurl
.Exemple:
Vous pouvez même demander une propriété spécifique ..
Permet d'arrêter le serveur et de le faire fonctionner avec un système de la propriété de nos choix.
Avis de la
-Dfoo=bar
?et le rechercher via curl ...
Qui prouve l'accès d'une propriété qui a été définie via la ligne de commande, regardons maintenant les autres choix.
Exemple #2: à l'Aide de démarrer.ini
La
/base-startini
projet contient une simplestart.ini
qui commence jetée sur le port 9090, et déploie la webapp.Ce
start.ini
contient également unfoo.ish
propriété.Permet le démarrage de la Jetée et essayer nos accessoires servlet l'accès de nouveau ...
et en faire la demande via curl ...
Exemple #3: à l'Aide de démarrer.d option ini
La
/base-startd
projet contient une simplestart.ini
qui commence jetée sur le port 9090, et déploie la webapp.Ce
start.ini
ne contient pas d'autres propriétés qui nous intéressent.La
start.d/myconf.ini
contient une propriété appeléefoo.d
qui nous intéresse.Permet le démarrage de la Jetée et essayer nos accessoires servlet l'accès de nouveau ...
et en faire la demande via curl ...
Exemple n ° 4: à l'Aide de --include-jetée-dir en option config
La
/base-jettyinclude
projet contient une nouvellestart.ini
qui commence jetée sur le port 9090, et déploie la webapp.Ce
start.ini
ne contient pas d'autres propriétés qui nous intéressent.Cependant, la
start.ini
utilise le--include-jetty-dir=../jettydir
option de configuration qui pointe vers un tout nouveau interrim de la jetée.configuration de base de la source.La
../jettydir/start.ini
contient une propriété appeléefoo.jetty.dir
qui nous intéresse.Permet le démarrage de la Jetée et essayer nos accessoires servlet l'accès de nouveau ...
et en faire la demande via curl ...
System.getProperties().contains("dbhost")
- mais ni l'ajout dedbhost="localhost"
ni-Ddbhost="localhost"
à lastart.ini
fichier qui fonctionne", Afin de leur fournir pour commencer.fichier ini également n'aide pas que je l'ai essayé qu'à partir de ce commentaire. Pouvez-vous modifier votre réponse et comprennent un petit script sur la façon de faire ce que vous avez proposé ?