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

时间:2011-10-26 13:39:03

标签: configuration parameters weblogic web.xml

我正在尝试在启动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>

然后在启动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中正常工作?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

首次尝试: 我相信过滤关键文件,如web.xml不是一个好习惯。但是,您可以使用antmaven来执行此操作。

===

第二次尝试: 好的如果必须使用相同的包,我宁愿更改 doPost 方法。它可以传递密钥并由 System.getProperty 方法设置,而不是将值传递给那里。并且还设置诸如开发环境之类的默认值是有意义的。