在Tomcat 8中将外部资源添加到类路径

Mic*_*des 21 java tomcat classpath tomcat8

我有一个Tomcat应用程序,需要引用应用程序外部的一些属性文件.通常这些存储在特定地方的本地机器上C:\PROJECT_NAME\conf\.

在Tomcat 7中,这可以通过放置一个context.xml文件来实现,/META-INF/其中使用了一个VirtualWebappLoader实际上将此位置添加到应用程序类路径的文件,如下所示:

<Context>
    <Loader className="org.apache.catalina.loader.VirtualWebappLoader"
        virtualClasspath="/PROJECT_NAME/conf"
        searchVirtualFirst="true" />
</Context>
Run Code Online (Sandbox Code Playgroud)

如何在Tomcat 8中实现同样的功能?

Mic*_*des 33

Tomcat 8迁移指南中有一节介绍了这一点,它将指导您使用资源配置

特别是,您将创建一个WebResourceRoot对象,该对象在其描述中包含以下文本.

VirtualWebappLoader - 由映射到WEB-INF/lib和WEB-INF/classes的资源前后资源替换

您的新context.xml将类似于以下内容:

<Context>
    <Resources className="org.apache.catalina.webresources.StandardRoot">
        <PreResources className="org.apache.catalina.webresources.DirResourceSet"
            base="C:\\PROJECT_NAME\\conf"
            internalPath="/"
            webAppMount="/WEB-INF/classes" />
    </Resources>
</Context>
Run Code Online (Sandbox Code Playgroud)

  • 我正在添加`jar`文件的外部目录,我不想在webapps lib driectory中.我不得不使用`webAppMount ="/ WEB-INF/lib"`来使它工作.您也可以在xml中使用变量,例如`$ {catalina.base}`. (2认同)