2010-11-19 19 views
1

OK, c'est moche. J'ai un fichier .war qui s'exécute dans une instance Tomcat 6 sur une machine Linux (CentOS 5). Le code Java inclut un appel à la méthode Runtime.exec(cmd), où il se transforme en un script shell 1 ligne qui exécute une application native. (R, si vous êtes curieux ...) Tout va bien, sauf que l'application native doit avoir des variables d'environnement définies pour pouvoir accéder à une base de données. Je ne peux pas éditer le code java et le recompiler. Je suppose que je pourrais éditer le contenu du fichier .war, mais je ne sais pas quoi modifier. Mais je pense que c'est OK - les processus fils héritent généralement de l'environnement des parents, n'est-ce pas? J'ai donc juste besoin de l'environnement de la JVM pour inclure le ORACLE_HOME et d'autres variables d'environnement, je pense.Variables d'environnement pour l'application s'exécutant sous Tomcat

J'ai découvert que vous pouvez mettre des variables dans le fichier bin/setenv.sh qui sont utilisées lors du chargement du processus tomcat. J'ai essayé d'ajouter les variables d'environnement, mais cela ne fonctionne pas.

Alors:

  1. Est-il possible de définir des variables d'environnement qui seront hérités jusqu'au niveau du processus JVM, de sorte que mon application exec'd hérite également ces variables?
  2. Sinon, que dois-je modifier dans le fichier .war pour définir ces variables manuellement? (Et quelle est-elle laide ??)

Merci de m'avoir aidé à faire fonctionner ce bidouille laid!

Répondre

0

Eh bien, la réponse à # 2 est facile. Comme je l'ai dit, l'appel exec() appelle un script shell qui exécute l'application. J'ai juste ouvert le fichier .war, et ajouté quelques lignes export FOO=bar, j'ai laissé tomber le résultat dans le répertoire webapps de tomcat, et cela a fonctionné.

Laide comme diable, cependant. Si n'importe qui a une bonne réponse pour l'option # 1, ils obtiendront le crédit pour répondre à celui-ci ...