Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 跨服务器环境变量_Java_Tomcat_Glassfish_Environment Variables - Fatal编程技术网

Java 跨服务器环境变量

Java 跨服务器环境变量,java,tomcat,glassfish,environment-variables,Java,Tomcat,Glassfish,Environment Variables,我想设置为能够在Glassfishv3和apachetomcat6服务器中设置字符串变量,如“DEVEL”或“PRODUCTION”,并希望它可以从java代码访问,以便我可以根据变量更改应用程序的行为。最简单的方法是什么?在web.xml中使用env条目: <env-entry> <description>development or production</description> <env-entry-name>devMode<

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

在web.xml中使用env条目:

<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>

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

CATALINA_OPTS   (Optional) Java runtime options used when the "start",
                or "run" command is executed.
因此,您可以在IDE中或仅在命令行中设置:

CATALINA_OPTS=-DdevelopmentMode=true 
然后在你的应用程序中:

System.getProperty("developmentMode")

这取决于它应该是常量还是动态变量。无论是在编译期间还是在运行时动态更改它。使用第一种方法,您可以在web.xml中设置init参数或env条目,甚至使用打包在jar归档中的简单属性文件。使用第二种方法,您可以在数据库中使用特殊类型的配置表,该表将由应用程序自动汇集,或者您可以利用JMX管理机制,并使用jconsole动态修改配置。我认为没有一种方法可以设置一个环境变量来同时适用于这两种方法服务器。不过,有一些方法可以为每个服务器设置环境变量

要设置web应用程序在运行时可以检测到的系统属性,请执行以下操作: Tomcat:设置环境变量CATALINA_OPTS的值并启动服务器

export CATALINA_OPTS=-DmyPropertyName=myPropertyValue
export CATALINA_OPTS=
GlassFish 3:有几种方法可以使用

  • 直接使用GlassFish系统属性。启动服务器。使用asadmin命令“创建系统属性”定义系统属性。重新启动服务器

    export CATALINA_OPTS=-DmyPropertyName=myPropertyValue
    
    export CATALINA_OPTS=
    
    asadmin创建系统属性myPropertyName=myPropertyValue

  • 直接使用JVM选项:启动服务器。使用asadmin命令“createjvmoption”创建一个新的jvm选项,该选项定义服务器启动时将使用的系统属性。重新启动服务器,使其使用该属性

    asadmin创建jvm选项-DmyPropertyName=myPropertyValue

  • 要更改web应用程序在运行时可以检测到的系统属性的值,请执行以下操作: Tomcat:更改CATALINA_OPTS环境变量的值并重新启动服务器

    export CATALINA_OPTS=-DmyPropertyName=myNEWPropertyValue
    
    GlassFish 3:更改属性值的方法取决于设置属性值的方法

  • 直接使用GlassFish系统属性。使用“创建系统属性”命令重新创建GlassFish系统属性,然后重新启动服务器

    export CATALINA_OPTS=-DmyPropertyName=myPropertyValue
    
    export CATALINA_OPTS=
    
    asadmin创建系统属性myPropertyName=myNEWPropertyValue

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

    export CATALINA_OPTS=-DmyPropertyName=myPropertyValue
    
    export CATALINA_OPTS=
    
    asadmin delete jvm选项-DmyPropertyName=myPropertyValue

    asadmin创建jvm选项-DmyPropertyName=myNEWPropertyValue

  • 要取消设置web应用程序在运行时可以检测到的系统属性的值,请执行以下操作: Tomcat:重置环境变量CATALINA_OPTS的值,不包括JVM选项定义。重新启动服务器

    export CATALINA_OPTS=-DmyPropertyName=myPropertyValue
    
    export CATALINA_OPTS=
    
    玻璃鱼3

  • 使用GlassFish系统属性。使用“删除系统属性”命令并重新启动服务器

    export CATALINA_OPTS=-DmyPropertyName=myPropertyValue
    
    export CATALINA_OPTS=
    
    asadmin删除系统属性myPropertyName

  • 使用JVM选项定义属性。使用deletejvmoptions命令并重新启动服务器

    asadmin delete jvm选项-DmyPropertyName=myPropertyValue

  • 从web应用程序内部访问系统属性 使用或[System.getProperty(字符串,字符串)][2]

    在说了这些之后,我想劝阻你不要使用这些信息来追求你所陈述的发展战略。 还有其他方法可以区分不涉及代码更改的开发和生产环境


    [2] :,java.lang.String)

    但是web.xml在应用程序中,而不是服务器中。我想在服务器中设置变量……我最终发现,glassfish gui admin中有一个系统属性选项卡,它创建了一个可由
    System.getProperty
    @coubateCzech访问的变量。您还可以从命令行设置一个系统属性。不需要得到所有的GUI。。。“…其他区分方法…”这些方法是什么?@coubeatczech:你可能想把这个问题作为一个新问题来问,所以更多的人会回答。你能给我一些提示吗,为什么这个解决方案值得让人失望?我有点不知道我会问什么…@coubeatcheck:在应用程序中检测环境的一些问题。。。您可能会将未经测试的代码放入“生产”中。。。这似乎是件坏事。用Java(一种OOP语言)编写的应用程序将开始成为“非OO”。。。对于一个小项目来说,这没什么大不了的,但是如果它发展到有一个团队来处理它,那么这个系统属性即使不是完全错误的,也会开始被很差地使用。系统属性也有可能被设置为某个新值。。。比如“合格”,然后涉及财产的任何和所有if声明都需要检查