TomEE:忽略docBase被扫描

我有一个docBase(备用docroot),其中包含很多我不包含在war文件中的静态内容。但是,TomEE的引导程序代码在docBase目录中扫描jar文件和其他JavaEE组件。由于docBase包含大量文件,因此部署需要很长时间。我想知道是否有一个标志或参数可以用来忽略这些目录的处理(扫描)。

我试图调整TomEE的server.xml文件,但似乎没有任何效果。

        <Context docBase="/large/directory" path="/foo/bar">
          <JarScanner scanClasspath="false" scanAllFiles="false" scanAllDirectories="false" />
          <Parameter name= "org.apache.tomee.catalina.TomcatWebAppBuilder.IGNORE" value="true"  />
          <Environment name="org.apache.tomee.catalina.TomcatWebAppBuilder.IGNORE" value="true"  type="java.lang.String" />
        </Context>

但是,通过这些更改,docBase仍在处理和扫描中。

darlayu 回答:TomEE:忽略docBase被扫描

深入研究源代码[1],我发现系统属性似乎正确地跳过了docBase

    private static boolean isExcludedBySystemProperty(final StandardContext standardContext) {
        String name = standardContext.getName();
        if (name == null) {
            name = standardContext.getPath();
            if (name == null) { // possible ?
                name = "";
            }
        }

        if (name.startsWith("/")) {
            name = name.substring(1);
        }

        final SystemInstance systemInstance = SystemInstance.get();
        return "true".equalsIgnoreCase(systemInstance.getProperty(name + ".tomcat-only",systemInstance.getProperty("tomcat-only","false")));
    }

通过传递系统属性-Dfoo / bar.tomcat-only = true似乎可以解决问题。开源取胜!

  1. https://github.com/apache/tomee/blob/master/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java

谢谢

本文链接:https://www.f2er.com/3157815.html

大家都在问