在tomcat的conf文件夹中访问文件到文件

时间:2011-07-14 15:38:31

标签: file tomcat configuration classpath

我想知道是否可以访问tomcat的conf文件夹中放置的文件。 通常情况下,我会在此文件中为战争之外的多个webapp配置。

我想使用类路径独立于文件系统。

我过去使用过lib文件夹。它很棒。 但是使用lib文件夹放置conf文件有点无意义。

有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:1)

我已经看到人们在webapps中进行配置的许多不好的方法要么使它不是真正的配置(你必须在更改配置时进行重新部署/发布),要么你的灵活性很小。

我如何处理问题的方法是将Spring用于property placeholder,但通常需要在加载Spring之前引导Spring或任何MVC堆栈,并使用一个属性来指示加载配置的位置。我使用了一个监听器:

package com.evocatus.util;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;


public class SimpleContextListenerConfig /*extend ResourceBundle */ implements ServletContextListener{

    private ServletContext servletContext;

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        servletContext = sce.getServletContext();
        servletContext.setAttribute(getClass().getCanonicalName(), this);
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {

    }

    public static String getProperty(ServletContext sc, String propName, String defaultValue) {
        SimpleContextListenerConfig config = getConfig(sc);
        return config.getProperty(propName, defaultValue);
    }

    public static SimpleContextListenerConfig getConfig(ServletContext sc) {
        SimpleContextListenerConfig config = 
            (SimpleContextListenerConfig) sc.getAttribute(SimpleContextListenerConfig.class.getCanonicalName());
        return config;
    }

    public String getProperty(String propName, String defaultValue)
    {
        /*
         * TODO cache properties
         */
        String property = null; 

        if (property == null)
            property = servletContext.getInitParameter(propName);
        if (property == null)
            System.getProperty(propName, null);
        //TODO Get From resource bundle
        if (property == null)
            property = defaultValue;

        return property;
    }
}

https://gist.github.com/1083089

首先从servlet上下文中拉出属性,然后系统属性允许您覆盖某些webapps。 您可以通过更改web.xml(不推荐)或creating a context.xml

来更改certian webapp的配置

您可以使用静态方法获取配置:

public static SimpleContextListenerConfig getConfig(ServletContext sc);