在Oracle WebLogic中,设置环境变量的最佳方法是什么,以便代码可以访问它?我们有运行WebLogic的第三方应用程序,用于查找环境变量。
注意:我们使用节点管理器启动托管服务器。
我希望能够将其设置在域配置中的某个位置,例如管理控制台中的“服务器启动”选项卡,但似乎没有好处。
我能看到的唯一方法就是 1.编辑bin / setDomainEnv.sh以导出环境变量 2.修改nodemanager.properties以使StartScriptEnabled = true
这样做会强制NodeManager使用/bin/startManagedWebLogic.sh,因此您可以向其添加变量,并在NodeManager启动时拾取它们。但是你也必须在每台机器上都这样做。
想知道是否有更简洁的方法,而不是使用Oracle的启动脚本。
答案 0 :(得分:11)
如果您确定没有使用任何常见框架(如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" # UNIX comment to describe environment variable.
对于系统属性,您可以添加命令行参数,这些参数将添加到每个服务器,方法是在文件顶部附近为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(..)不区分大小写。