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