2010-06-01 3 views
9

web.xml의 설정을 제어하고 다른 환경에 대해 한 번 다른 설정을 사용하고 싶습니다.web.xml의 속성 사용

web.xml에서 classpath의 속성 파일에서 속성을 사용할 수 있습니까? 이런 식으로 뭔가 :

<context-param> 
    <param-name>myparam</param-name> 
    <param-value>classpath:mypropertyfile.properties['myproperty']</param-value> 
</context-param> 

감사합니다 모두 정적 값을 보유

+2

받는다는 전쟁 플러그인의 배포 설명자에 필터링을 구성하면 솔루션입니다 : http://stackoverflow.com/questions/12099008/how-to-include-values-from-properties-file-into-web-xml/12099830#12099830 – lancha90

답변

6

아니요. 그러나 런타임에 등록 정보 파일을 전달하고 읽을 수 있습니다.

<context-param> 
    <param-name>propfile</param-name> 
    <param-value>myprop.properties</param-value> 
</context-param> 

당신이 서블릿에 액세스 할 수있는 경우 런타임에 속성을로드 한 후 간단하다.

Properties properties = new Properties(); 
GenericServlet theServlet = ...; 
String propertyFileName = theServlet.getInitParameter("propfile"); 
properties.load(getClass().getClassLoader().getResourceAsStream(propertyFileName)); 
Object myProperty = properties.get("myProperty"); 
+1

내 myprop.properties 파일은 프로젝트 폴더 계층 구조에서 어디에 있어야합니까? – Amruta

+0

디자인을 제어하지 않는 타사 구성 요소를 구성하려는 경우 사소하지 않습니다. –

2

AFAIK context-paramenv-entry

P. 프로퍼티 파일에서 런타임 (동적) 값을 가져 오지 않습니다. 처럼 될 것 :

<context-param>  
    <param-name>myparam</param-name>  
    <param-value>myactualpropertyvalue</param-value>  
</context-param> 

값에 대한 변경은 웹 응용 프로그램의 재배치를 필요로한다. 당신의 예에서

, 당신은 글래스 피시를 사용하는 경우 나는 당신의 요구 사항은 빌드시에 이해 경우 명령 줄 http://javahowto.blogspot.com/2010/04/glassfish-set-web-env-entry.html

에서 실시간으로 업데이트 할 수 있습니다 classpath:mypropertyfile.properties['myproperty']

문자열을 것입니다 검색 값 (다른 env에 대한 다른 전쟁) 및 실행 시간 동안?

ant/maven 빌드 프로세스의 일부로 web.xml의 값을 바꿀 수 있습니다.

+2

답변 해 주셔서 감사합니다. 그러나 시작 시간에이 건물을 찾고 싶습니다. 나는. 같은 전쟁은 다른 env에 대해 다른 속성을 가져야합니다. 나는 이것을 할 수 있는지 전혀 확신 할 수 없다. 내가 제안하는 것처럼 거의하고있는 순간에 Maven 빌드 중 값을 대체하려고합니다. –

+0

이것은 유익한 정보입니다. http://java.sun.com/developer/technicalArticles/xml/WebAppDev4/ – ingyhere

+0

Java 코드에서이 컨텍스트를 어떻게 호출할까요? 'classpath'는 어디에서 가리키고 있습니까? – JesseBoyd

1

당신이 이렇게 등록 정보 파일을 사용할 필요하지 런타임에 또 다른 한개로 전환되지 않도록 매우 높습니다 서로 다른 환경을 사용하는 경우.

maven을 사용하는 경우 환경에 다른 프로필을 정의하고 각 프로필에서 변경할 매개 변수를 설정할 수 있습니다.

당신의 web.xml

<context-param> 
    <param-name>myparam</param-name> 
    <param-value>${my.param}</param-value> 
</context-param> 

에서 당신의 pom.xml

<profile> 
    <id>env1</id> 
    <properties> 
     <my.param>myParamValue<my.param/> 
    </properties> 
</profile> 

<profile> 
    <id>env2</id> 
    <properties> 
     <my.param>myParamValue2<my.param/> 
    </properties> 
</profile> 

에서

그리고 여기

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <configuration> 
     <filteringDeploymentDescriptors>true</filteringDeploymentDescriptors> 
    </configuration> 
</plugin>