我试图在启动 weblogic 服务器时使用 -D 表示法将 web.xml 中配置的变量的 JVM 参数作为上下文参数传递。我已经使用 Tomcat 7 尝试了相同的配置,它按预期工作,但在 weblogic 服务器 10.3.3 中不起作用。有什么线索吗?
web.xml
<?xml version="1.0" encoding="UTF-8" ?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>testeParWebXml</display-name>
<context-param>
<description>Habilita ou desabilita a configuração de debug do Facelets! Página de debug do Seam.</description>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>${habilitar.debug}</param-value>
</context-param>
<welcome-file-list>
然后在启动 jvm 时,我使用以下参数传递参数:
-Dhabilitar.debug=true
我构建了一个 Servlet 来测试:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter pw = response.getWriter();
String valorParametro = getServletContext().getInitParameter("facelets.DEVELOPMENT");
pw.write("Param value from web.xml ==>> " + valorParametro);
}
正如我在使用 Tomcat 时提到的,如果我将 -Dhabilitar.debug 标志中的值更改为 false 或 true,它会在 servlet 中正确打印该值。
Param value from web.xml ==>> true
在 weblogic 中,我得到如下输出:
Param value from web.xml ==>> ${habilitar.debug}
正如注意到的,weblogic 不解析 web.xml 中设置的变量的值。
是否可以在 weblogic 10.3.3 中使其正常工作?
最佳答案
看起来不同容器之间没有一致的行为。恕我直言,你不应该那样做。我一直使用(并且总是看到人们使用)包含默认值(而不是参数化值)的 web.xml 。
请参阅这些附加资源(包括一些不太优雅但有效的方法来解决您的问题):
关于configuration - 如何使用 weblogic 10.3.x 在 web.xml 中动态传递参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7903439/