2016-01-06 154 views
2

我一直在寻找一种方法来公开'allowLinking'属性,以允许TomcatEmbeddedServletContainerFactory遵循符号链接到其documentRoot下的资源。Spring Boot嵌入式Tomcat'allowLinking'属性

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

<!-- Tomcat 7: --> 
<Context allowLinking="true" /> 

<!-- Tomcat 8: --> 
<Context> 
    <Resources allowLinking="true" /> 
</Context> 

而编程配置TomcatEmbeddedServletContainerFactory的春天启动应用程序如何将一个揭露这个属性?

回答

0

我有完全一样的问题,而且是能够实现以下以解决此问题:

@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; 
} 
0

THKS埃里克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; 
} 
相关问题