2012-05-06 2 views
0

나는 web.xml이라는 구성 파일이 있다는 것을 알고있다. 달성하고자하는 것은 응용 프로그램 특정 구성을 가지고 있으며 웹 서버가 시작될 때 읽어야하는 또 다른 구성 파일을 가지고있다. 또한 Class가이 구성을 읽을 수 있기를 바랍니다. 거기에 web.xml 파일 자체를 구성 할 수있는 방법이 있습니까 아니면 다른 방법이 있습니까eclipse 동적 웹 프로젝트에서 구성 파일을 읽는 방법은 무엇입니까?

답변

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) {} 
} 

이제이 같은 웹 응용 프로그램의 아무 곳이나 구성을 얻을 : 나는 구성을 유지하는 클래스를 만들 것이다

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

ServletContext에 속성으로서 추가하는 것보다. 클래스는 정적 메서드를 통해 구성에 대한 액세스를 제공하기 만하면됩니다.

+0

내가로드 한 xml 파일에 액세스하려면 다음을 수행하십시오. configFile = 새 파일 (context.getResource ("/ WEB-INF/academy.xml"). getPath()). \t \t \t 구성 config = 새 XMLConfiguration (configFile); \t \t \t System.out.println ("루트 요소 이름 :"+ config.getString ("application.name"))); 이 문은 null을 반환합니다. 내 XML 구조는 다음과 같습니다. 아카데미

관련 문제