java - son - Pasar variables de entorno a una JVM, de una manera independiente de la plataforma
variables de entorno java linux (3)
Estoy desarrollando una aplicación J2EE que se ejecuta en JBoss en una máquina con Windows Vista, pero la aplicación terminará en una máquina Linux. ¿Hay alguna forma de pasar el valor de una variable de entorno de una manera independiente de la plataforma?
Creo (pero no estoy seguro) que la plataforma sensible sería:
-Denv_var=%MY_ENV_VAR% (Windows)
-Denv_var=$MY_ENV_VAR (Linux)
y desde allí accedería al valor (en Java) usando
System.getProperty("MY_ENV_VAR");
- ¿Es eso correcto?
El Javadoc para System.getenv(String name)
parece implicar que el método depende de la plataforma, pero no lo tengo claro. ¿Podría pasar por alto la variable en la JVM por completo, y usar getenv()
después de usar estableciendo el valor para una variable de entorno utilizando el sistema operativo?
La forma en que interpreto el tutorial de java sobre esto es que getenv funciona de una manera independiente de la plataforma, pero debe tener en cuenta que las variables no tienen un nombre uniforme en todas las plataformas. Como pareces configurar la var por ti mismo, esto no se aplica a ti.
Sí, getEnv () simplemente devolverá el nombre de la variable de entorno, y puede configurarlo de la forma que sea apropiada para la plataforma en la que se está ejecutando (normalmente a través de un archivo de inicio de lote en Win32). Es una buena práctica recurrir a los valores predeterminados razonables basados en la plataforma (inspeccionando System.getProperty("os.name")
), si es posible, quiere evitar que los usuarios se molesten con la necesidad de meterse con variables ambientales para ejecutar su software .
System.getenv () es independiente de la plataforma por sí mismo. Usando tu ejemplo anterior, puedes escribir
String value = System.getenv("MY_ENV_VAR")
y funcionará tanto en Linux como en Windows. No hay razón para envolver esto en la propiedad del sistema java. Dicho esto, la parte "dependiente de la plataforma" de getenv()
radica en el hecho de que los diferentes sistemas operativos usan diferentes variables de entorno, como PATH en Windows vs path en Linux. Pero mientras use sus propias variables y las nombre constantemente (siempre mayúsculas, por ejemplo), estará bien.