跨服务器环境变量

时间:2011-02-05 13:22:21

标签: java tomcat glassfish environment-variables

我想设置为能够在Glassfishv3Apache tomcat 6服务器中设置字符串变量,例如“DEVEL”或“PRODUCTION”,并希望可以从java代码访问它我可以根据变量更改我的应用程序的行为。最简单的方法是什么?

4 个答案:

答案 0 :(得分:4)

我认为没有一种设置适用于这两种服务器的环境变量的方法。有些方法可以为每个服务器设置环境变量。

设置Web应用程序在运行时可以检测到的系统属性:

Tomcat :设置环境变量CATALINA_OPTS的值并启动服务器。

export CATALINA_OPTS=-DmyPropertyName=myPropertyValue

GlassFish 3 :您可以使用几种方法。

  1. 直接使用GlassFish系统属性。启动服务器。使用asadmin命令'create-system-properties'来定义System属性。重启服务器。

    asadmin create-system-property myPropertyName = myPropertyValue。

  2. 直接使用JVM选项:启动服务器。使用asadmin命令'create-jvm-option'创建一个新的JVM选项,该选项定义将在服务器启动时使用的System属性。重新启动服务器,使其使用该属性。

    asadmin create-jvm-options -DmyPropertyName = myPropertyValue

  3. 要更改运行时Web应用程序可以检测到的系统属性的值,请执行以下操作:

    Tomcat :更改CATALINA_OPTS环境变量的值并重新启动服务器。

    export CATALINA_OPTS=-DmyPropertyName=myNEWPropertyValue
    

    GlassFish 3 :更改属性值的方法取决于您用于设置属性值的方法。

    1. 直接使用GlassFish系统属性。使用'create-system-properties'命令重新创建GlassFish系统属性,然后重新启动服务器。

      asadmin create-system-property myPropertyName = myNEWPropertyValue

    2. 直接使用JVM选项:删除旧的jvm选项并在其位置创建一个新选项。重启服务器。

      asadmin delete-jvm-options -DmyPropertyName = myPropertyValue

      asadmin create-jvm-options -DmyPropertyName = myNEWPropertyValue

      请参阅http://java.net/jira/browse/GLASSFISH-11253

    3. 要取消设置Web应用程序在运行时可以检测到的系统属性的值:

      Tomcat :重置环境变量CATALINA_OPTS的值,不包括JVM选项定义。重启服务器。

      export CATALINA_OPTS=
      

      GlassFish 3

      1. 使用GlassFish系统属性。使用'delete-system-properties'命令并重新启动服务器。

        asadmin delete-system-property myPropertyName

      2. 使用JVM选项定义属性。使用delete-jvm-options命令并重新启动服务器。

        asadmin delete-jvm-options -DmyPropertyName = myPropertyValue

      3. 从Web应用程序内部访问系统属性

        使用System.getProperty(String)或[System.getProperty(String,String)] [2]

        在说完这一切之后,我想阻止您使用此信息来实现您所声明的开发策略。

        还有其他方法可以区分不涉及代码更改的开发和生产环境。

        [2]:http://download.oracle.com/javase/6/docs/api/java/lang/System.html#getProperty(java.lang.String,java.lang.String)

答案 1 :(得分:3)

对于tomcat,您可以使用CATALINA_OPTS环境变量来设置系统属性:

CATALINA_OPTS   (Optional) Java runtime options used when the "start",
                or "run" command is executed.

因此,您可以在IDE中或在命令行中设置它:

CATALINA_OPTS=-DdevelopmentMode=true 

然后在你的应用中:

System.getProperty("developmentMode")

答案 2 :(得分:0)

在web.xml中使用env-entry:

<env-entry>
  <description>development or production</description>
  <env-entry-name>devMode</env-entry-name>
  <env-entry-type>java.lang.String</env-entry-type>
  <env-entry-value>PRODUCTION</env-entry-value>
</env-entry>

在Java代码中,您可以执行以下操作:

Context ctx = new InitialContext();
String devMode = (String) ctx.lookup("java:/comp/env/devMode");

答案 3 :(得分:0)

取决于它应该是常量还是动态变量。是否要在编译期间或在运行时动态更改它。使用1st方法,您可以在web.xml设置init参数或env-entries中执行此操作,甚至可以使用jar存档中打包的简单属性文件。使用第二种方法,您可以在数据库中使用特殊类型的配置表,这些配置表将由应用程序通过piropdically进行池化,或者您可以利用JMX管理机制并使用jconsole动态修改配置

相关问题