Java 弹簧靴嵌入Tomcat';允许链接';财产

Java 弹簧靴嵌入Tomcat';允许链接';财产,java,spring-boot,embedded-tomcat-8,Java,Spring Boot,Embedded Tomcat 8,我一直在寻找一种公开属性“AllowLink”的方法,以允许TomcatEmbeddedServletContainerFactory跟踪documentRoot下资源的符号链接 根据Tomcat 8迁移文档,此功能切换到Tomcat 8+的“资源”标签: 在为Spring启动应用程序以编程方式配置TomcatEmbeddedServletContainerFactory时,如何公开此属性?我遇到了完全相同的问题,并且能够实现以下方法来解决此问题: @Bean public Embedded

我一直在寻找一种公开属性“AllowLink”的方法,以允许TomcatEmbeddedServletContainerFactory跟踪documentRoot下资源的符号链接

根据Tomcat 8迁移文档,此功能切换到Tomcat 8+的“资源”标签:



在为Spring启动应用程序以编程方式配置TomcatEmbeddedServletContainerFactory时,如何公开此属性?

我遇到了完全相同的问题,并且能够实现以下方法来解决此问题:

@Bean
public EmbeddedServletContainerFactory servletContainer() 
{
    TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
    // allow symbolic links under the filesystem context
    // don't use this on Windows!
    if (IOCase.SYSTEM.isCaseSensitive())
    {
        Log.info("Enabling support for symbolic links on the webserver.");
        for (TomcatContextCustomizer customizer : tomcat.getTomcatContextCustomizers())
        {
            StandardContext context = new StandardContext();
            context.setAllowLinking(true);
            customizer.customize(context);
        }
    }
    return tomcat;
}

thks Erik Brandsberg,修改Tomcat 8中的代码以解决此问题

@Bean
public EmbeddedServletContainerFactory servletContainer()
{
    TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
    // allow symbolic links under the filesystem context
    // don't use this on Windows!
    if (IOCase.SYSTEM.isCaseSensitive())
    {
        TomcatContextCustomizer customizer = new TomcatContextCustomizer() {
            @Override
            public void customize(Context context) {
                StandardRoot r = new StandardRoot();
                r.setAllowLinking(true);
                context.setResources(r);
            }
        };
        tomcat.addContextCustomizers(customizer);

    }
    return tomcat;
}
@Bean
public EmbeddedServletContainerFactory servletContainer()
{
    TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
    // allow symbolic links under the filesystem context
    // don't use this on Windows!
    if (IOCase.SYSTEM.isCaseSensitive())
    {
        TomcatContextCustomizer customizer = new TomcatContextCustomizer() {
            @Override
            public void customize(Context context) {
                StandardRoot r = new StandardRoot();
                r.setAllowLinking(true);
                context.setResources(r);
            }
        };
        tomcat.addContextCustomizers(customizer);

    }
    return tomcat;
}