我正在尝试添加在一个 weblogic 应用程序上拥有一个应用程序的多个实例的能力。不幸的是,到目前为止,我的应用程序依赖于环境属性来知道从哪里检索配置并写入一些特殊的日志/备份。
向战争发送变量的最干净的方法似乎是使用 plan.xml 文件——它可以通过控制台访问并且可以即时更改。这样我们就可以在服务器上进行 2 次 war,每次都指向不同的目录和配置文件。
但是,我似乎无法弄清楚如何检索这个变量。到目前为止,我没有成功尝试:
System.getProperty("HOME")
System.getenv().get("HOME")
((Context)new InitialContext().lookup("java:comp/env")).lookup("HOME")
我的plan.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<deployment-plan xmlns="http://www.bea.com/ns/weblogic/deployment-plan"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.bea.com/ns/weblogic/deployment-plan http://www.bea.com/ns/weblogic/deployment-plan/1.0/deployment-plan.xsd"
global-variables="false">
<application-name>NAME</application-name>
<variable-definition>
<variable>
<name>HOME</name>
<value>TEST</value>
</variable>
</variable-definition>
</deployment-plan>
据我所知,
plan.xml
变量仅在 plan.xml
文件中使用。您需要将值放在其他地方才能访问它们。最简单的方法是 web.xml
中的 servlet 上下文参数。例如:
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
...
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>inject_value_here</param-value>
</context-param>
...
</web-app>
plan.xml
<?xml version='1.0' encoding='UTF-8'?>
<deployment-plan xmlns="http://xmlns.oracle.com/weblogic/deployment-plan"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/deployment-plan http://xmlns.oracle.com/weblogic/deployment-plan/1.0/deployment-plan.xsd" global-variables="true">
<application-name>appname</application-name>
<variable-definition>
<variable>
<name>springProfilesActive</name>
<value>dev</value>
</variable>
</variable-definition>
<module-override>
<module-name>appname.war</module-name>
<module-type>war</module-type>
<module-descriptor external="false">
<root-element>web-app</root-element>
<uri>WEB-INF/web.xml</uri>
<variable-assignment>
<name>springProfilesActive</name>
<xpath>/web-app/context-param/[param-name="spring.profiles.active"]/param-value</xpath>
<origin>planbased</origin>
</variable-assignment>
</module-descriptor>
</module-override>
</deployment-plan>
您可以使用
ServletContext.getInitParameter
访问此上下文参数。
更多信息和示例: https://docs.oracle.com/cd/E23943_01/web.1111/e13702/config.htm#DEPGD181