8

我正在尝试使用 weblogic 部署计划将 init-param 值添加到供应商提供的 .war 文件的 web.xml 中。

虽然我意识到我可以打开 .war 文件并在其中编辑文件,但我更喜欢使用部署计划来完成此操作,因为我需要将 .war 文件部署到具有不同 init 值的多个服务器-有问题的参数。

我在网上找到了很多关于如何做到这一点的例子,但我的努力受到了打击。我认为如果我能看到部署计划对我部署的 war 文件的影响,我将能够快速找出我做错了什么。

在应用部署计划后,我有没有办法查看 weblogic (10.3.3) 应用程序的运行时部署描述符?

4

2 回答 2

3

不久前我花了一些时间对此进行调查,尽管 WL10 将 WAR 解包到一个临时目录中,但它不会修改该位置的部署计划中列出的文件。我还尝试使用 getResource/getResourceAsStream 读取整个 web.xml,发现它也是原始的、未修改的文件。

我从来没有弄清楚 WL 如何应用这些更改,以便它们被 ServletContext 拾取,而它们在其他任何地方都不可见。我的猜测是它使用了一些技巧来覆盖这些文件的加载并动态应用更改。

在与它斗争了一段时间后,我最终确定了以下内容来列出启动时 init 参数的值:

    if (log.isTraceEnabled()) {
        final Enumeration<String> names = context.getInitParameterNames();
        while (names.hasMoreElements()) {
            final String key = names.nextElement();
            final String value = context.getInitParameter(key);
            log.trace("Init Parameter '{}' = '{}'", key, value);
        }
    }

(使用 slf4j 进行日志记录)

当然,如果部署计划有问题并且没有设置值,这也无济于事,但这是我能想到的最好的方法。

于 2011-03-25T01:24:17.243 回答
2

在 12.2.1 中有一个 DebugDeploymentPlan 服务器调试设置,如果打开,服务器会记录类似

 <After applying the overrides from the deployment plan, the descriptor "META-INF/ejb-jar.xml" is:
于 2015-12-07T14:38:22.233 回答