首页 > 解决方案 > 如何让 WebApp 在嵌入式码头的类路径上找到应用程序属性?

问题描述

我们有一个应用程序,它由一个 war 文件和两个属性文件组成。在正常情况下,我们只需将战争放入 /webapps (jetty) 并将配置放入 /resources,一切运行良好。

我们如何使用嵌入式码头做到这一点?所以我有一个类文件,它可以创建一个嵌入式码头服务器并使用以下方式部署war文件:

WebAppContext ctx = new WebAppContext(warfileLocation,"/");

服务器运行起来,但应用程序没有启动,因为它找不到应用程序引用的属性,该应用程序希望在类路径中找到 .properties 文件。

如何以编程方式将配置属性文件部署到嵌入式码头上下文?大概是通过在上下文中使用某种方法来引用本地磁盘上的文件?

谢谢。

标签: javaembedded-jettyproperties-file

解决方案


AWebAppContext是与 Server 类路径隔离的类加载器,使 Server 类路径上可用的内容对WebAppContext.

你有两个选择。

  1. 翻转类加载器隔离的规则。

如果您的嵌入式码头中只有 1 个 WebAppContext,并且您不关心类加载器隔离,请调用WebAppContext.setParentLoaderPriority(true);

  1. 将您需要的特定类路径条目添加到WebAppContext.

在将其添加到并启动/部署之前,您可以调用WebAppContext.setExtraClasspath(String)添加任何您想要的任意类路径条目。WebAppContextHandlerCollection


推荐阅读