0
私はweb.xmlと呼ばれる構成ファイルがあることを知っています 私が達成したいのは、アプリケーション固有の構成を持つ別の構成ファイルを持ち、Webサーバーの起動時に読み取られなければなりません。私はクラスがこの設定を読むことができるようにしたい。これは、web.xmlファイル自体を構成する方法はありますか、別の方法がありますか?eclipseの動的Webプロジェクトで構成ファイルを読むにはどうすればいいですか?
私はweb.xmlと呼ばれる構成ファイルがあることを知っています 私が達成したいのは、アプリケーション固有の構成を持つ別の構成ファイルを持ち、Webサーバーの起動時に読み取られなければなりません。私はクラスがこの設定を読むことができるようにしたい。これは、web.xmlファイル自体を構成する方法はありますか、別の方法がありますか?eclipseの動的Webプロジェクトで構成ファイルを読むにはどうすればいいですか?
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に属性として追加するのではなく、このクラスは、静的メソッドを使用して構成へのアクセスを提供するだけです。
ロードした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構造は:アカデミー application> –