如果您确定没有使用常见的框架,如Spring Framework,并且您的代码严格查找环境变量,那么您必须在启动Java进程之前,在任何常规配置文件之外设置环境变量。一旦Java进程启动,环境变量将对该进程为只读和最终。
注意:如果您需要整个系统的环境变量,请使用/etc/profile、/etc/bash_profile、/etc/environment等。请记住,在这些全局位置设置变量需要从新登录重新启动节点管理器。您无需重新启动计算机,但通常只有在登录时才会源配置文件/环境文件。
对于仅在一个域或节点中的应用程序,环境变量应该在服务器的启动脚本中。编辑setDomainEnv.[sh|cmd]或start(Managed)Weblogic.[sh|cmd]是设置WebLogic环境变量的最佳选择。
然而,如果应用程序使用Spring,则系统属性和环境变量会合并在一起。系统属性被高度鼓励并且更容易维护和控制。
参考:What is best practice for setting java system properties, -D or System.setProperty()?
Weblogic域环境变量
设置系统属性或环境变量的地方之一是编辑用于启动共享同一WebLogic服务器安装和域的所有节点或服务器的域环境脚本。在< weblogic_domain >/bin/setDomainEnv.sh(在Windows上为setDomainEnv.cmd)中,对于环境变量,只需将它们添加到顶部并添加注释以记录其使用。
export CUSTOM_VAR="test"
对于系统属性,您可以通过向文件顶部、WL_HOME定义附近但在函数和注释之后添加EXTRA_JAVA_PROPERTIES行来添加将添加到每个服务器的命令行参数。
EXTRA_JAVA_PROPERTIES="-Denv=TEST"
export EXTRA_JAVA_PROPERTIES
WL_HOME="/appl/oracle/middleware/wls/12.1.2.0.0/wlserver"
export WL_HOME
Weblogic节点特定的环境变量
如果您需要为由同一节点管理器启动的每个节点提供不同的环境变量,则必须对启动脚本进行进一步的定制。在这种情况下,请编辑< weblogic_domain >/bin/startManagedWeblogic.[sh|cmd]文件,并在_export SERVER_NAME_之后插入一些脚本逻辑。通过这种方式,您可以根据SERVER_NAME等驱动您的设置。
提示:Windows环境变量对System.getenv(..)不区分大小写。
setDomainEnv
文件来设置必要的变量。不幸的是,它没有将配置与weblogic配置本身耦合,这就是我所追求的,但我找不到更好的方法。 - David Hergert