2012-05-06 23 views
0

私はweb.xmlと呼ばれる構成ファイルがあることを知っています 私が達成したいのは、アプリケーション固有の構成を持つ別の構成ファイルを持ち、Webサーバーの起動時に読み取られなければなりません。私はクラスがこの設定を読むことができるようにしたい。これは、web.xmlファイル自体を構成する方法はありますか、別の方法がありますか?eclipseの動的Webプロジェクトで構成ファイルを読むにはどうすればいいですか?

答えて

1

Apache Commons Configurationを使用できます。 user guideをご覧ください。あなたはそれが起動時に行われるようにしたいので、ここではサンプルの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に属性として追加するのではなく、このクラスは、静的メソッドを使用して構成へのアクセスを提供するだけです。

+0

ロードしたXMLファイルにアクセスするには、次の操作を行いました。 configFile = new File(context.getResource( "/ WEB-INF/academy.xml")。getPath()); \t \t \tコンフィギュレーションconfig = new XMLConfiguration(configFile); \t \t \t System.out.println( "ルート要素名:" + config.getString( "application.name")); このステートメントはnullを戻します。私のXML構造は: アカデミー

関連する問題