【问题标题】:How to dynamically pass parameters in web.xml using weblogic 10.3.x?如何使用 weblogic 10.3.x 在 web.xml 中动态传递参数?
【发布时间】:2011-10-26 13:39:02
【问题描述】:

我试图在启动 weblogic 服务器时使用 -D 表示法将 web.xml 中配置的变量的 JVM 参数作为上下文参数传递。我已经使用 Tomcat 7 尝试了相同的配置,它按预期工作,但它在 weblogic server 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 中使其正常工作?

【问题讨论】:

    标签: configuration parameters weblogic web.xml


    【解决方案1】:

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

    【讨论】:

    • 嗨,不幸的是,这不是我工作环境的选择。我已经知道这些方法,但这些都不能满足我们的要求,即在不修改任何包的情况下启用和禁用接缝调试页面。容器之间的不一致是导致更多问题的原因,因为 pple 坚持使用它工作的地方(在本例中为 tomcat)并希望在 weblogic 中为生产环境提供相同的功能。
    • 是的,我也已经成为容器不一致的受害者。 :) 祝你好运尝试解决您的问题。
    【解决方案2】:

    第一次尝试: 我认为过滤诸如 web.xml 之类的关键文件并不是一个好习惯。但是,您可以使用 antmaven 来执行此操作。

    ===

    第二次尝试: 好的,如果必须使用相同的软件包,我更愿意更改 doPost 方法。除了将值传递到那里,它可以传递键并由 System.getProperty 方法在那里设置。并且设置默认值(例如开发环境)也很有意义。

    【讨论】:

    • 您好,首先感谢您的回复。当您说这不是一个好习惯时,您是正确的,但在这种情况下,这是一项要求,因为使用 ant 或 maven 实际上会涉及为开发和生产环境生成多个包,并且在这种特定情况下不是可接受的选择.我也在 Oracle 论坛上讨论过这个问题,最终的答案是这不是一个规范请求,weblogic 不支持这种方法。所以我会假设这个问题没有正确的答案。问候。
    • 感谢您的帮助。不幸的是,我的问题似乎没有直接的解决方案。它涉及使用不同的方法,在这种特定情况下对我来说不是一个选择。
    猜你喜欢
    • 2012-02-11
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多