0

web.xml という構成ファイルがあることは知っています。達成したいのは、アプリケーション固有の構成を持つ別の構成ファイルを用意することであり、Web サーバーの起動時にそれを読み取る必要があります。また、クラスがこの構成を読み取れるようにしたいと考えています。これを構成できる方法は web.xml ファイル自体ですか、それとも別の方法がありますか

4

1 に答える 1

1

ApacheCommons構成を使用できます。ユーザーガイドをご覧ください。起動時に実行する必要があるため、ここにサンプルのServletContextListenerを示します。

package test;

import java.io.File;
import java.net.MalformedURLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.XMLConfiguration;

public class ConfigurationListener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        ServletContext context = sce.getServletContext();
        File configFile;

        try {
            configFile = new File(context.getResource("/WEB-INF/configuration.xml").getPath());
            Configuration config = new XMLConfiguration(configFile);
            context.setAttribute("configuration", config);
        } catch (ConfigurationException | MalformedURLException ex) {
            Logger.getLogger(ConfigurationListener.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {}
}

次に、次のようにWebアプリケーションの任意の場所で構成を取得します。

Configuration config = (Configuration) request.getServletContext().getAttribute("configuration");

ServletContextに属性として追加するのではなく、構成を保持するクラスを作成します。このクラスは、静的メソッドを介して構成へのアクセスを提供するだけです。

于 2012-05-06T08:47:53.493 に答える