如何使用weblogic 10.3.x在web.xml中动态传递参数?

gro*_*roo 6 parameters configuration web.xml weblogic

我正在尝试在启动weblogic服务器时使用-D表示法将web.xml中配置的变量的JVM参数作为context-parameter传递.我已经使用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>
Run Code Online (Sandbox Code Playgroud)

然后在启动jvm时我使用以下参数传递:

-Dhabilitar.debug=true
Run Code Online (Sandbox Code Playgroud)

我构建了一个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);
}
Run Code Online (Sandbox Code Playgroud)

正如我提到的使用Tomcat,如果我在-Dhabilitar.debug标志中将值更改为false或true,它会正确地在servlet中打印该值.

Param value from web.xml ==>>  true
Run Code Online (Sandbox Code Playgroud)

在weblogic中,我得到的输出如下:

Param value from web.xml ==>>  ${habilitar.debug}
Run Code Online (Sandbox Code Playgroud)

注意,weblogic不会解析web.xml中变量集的值.

是否有可能在weblogic 10.3.3中正常工作?

Vic*_*ari 3

看起来不同容器之间的行为不一致。恕我直言,你不应该这样做。我一直使用(并且总是看到人们使用)包含默认值(而不是参数化值)的 web.xml 。请参阅这些附加资源(包括一些不太优雅但可以解决您的问题的方法):