0

파일 속성에서 정보를 가져 오는 응용 프로그램을 개발 중이고 새로운 값을 속성 파일에 넣는 필드를 만듭니다. 변경 사항을 제출할 때 파일이 다시로드되지 않고 변경 사항은 응용 프로그램을 다시로드 한 후에 만 ​​고려됩니다. 내가 파일에 텍스트 필드에서 새 값을 저장하려면이 클래스를 사용하고 이클립스 인디고을 Liferay 6.1, 톰캣 7.0, 만약 angel, 봄, 최대 절전 모드 및 메이븐변경 후 속성 파일을 자동으로 새로 고침

함께 일하고 있어요

public class configurationProperties { 

Properties prop = new Properties() ; 
File fProp = new File("C:/integrationContinue/src/main/resources/fooMessages_fr_FR.properties") ; 
FileInputStream stream = null; 
FileOutputStream oStream = null; 

public void changeUrlJenkins(String url) throws IOException{ 


    stream = new FileInputStream(fProp); 
    prop.load(stream) ; 
    prop.setProperty("jenkins.url",url) ; 
    oStream = new FileOutputStream(fProp); 
    prop.store(oStream,"test") ; 

} 

때 저장 버튼을 클릭해도 아무 일도 일어나지 않지만 속성 파일을 여는 경우

나는이 메시지가 나타납니다 "파일 '.../fooMessages_fr_FR.properties'파일이 파일 시스템에서 변경되었습니다. 편집기 내용을 바꾸시겠습니까 이러한 변화와 함께? "

"재로드 버튼"을 클릭하면 변경 사항이 제출되고 응용 프로그램이 다시로드됩니다.> 이클립스에서는 괜찮습니다. 웹 브라우저에서는 변경할 수 없습니다.

PS : 내가 대신하는 Liferay에 통합 톰캣 톰캣 관리자를 사용하는 경우 작동 할 수있는 들었지만, 나는 톰캣 오류에 대한 새로운 경로로하는 Liferay를 구성하고 싶어 할 때 나타나는

나는 자동으로 다시로드 할 수있는 일 속성 파일을 수정 한 후

답변

0

나는 그것의 유일한 FileInputStream에 폐쇄에 대해 다른 주제의 해결책을 발견하고 그것을 잘 작동합니다 :)

How to reload properties file in java (자발의 대답)

+0

FileOutputStream도 닫아야합니다. store 메소드에서 javadocs : "출력 스트림이 남아 있습니다. 이 메서드가 반환 된 후에 열립니다. " –

0

src- 폴더의 속성을 변경했는데 잘못되었습니다. classes- 폴더로 변경해야합니다.

ps : Eclipse가 클래스 폴더에 복사 했으므로 이클립스에서 작동합니다.

+0

"with"/ integrationContinue/target/classes/fooMessages_fr_FR을 사용하십시오.속성 "파일에 데이터를 저장하지만 이클립스에서는 열 수 없으며 함수는 리소스 폴더에서 속성을 가져오고/target/classes는"새로 설치 "한 후에 만 ​​표시되기 때문에 다시로드 할 수 없습니다 – Jhon

+0

다른 주제에 대한 해결책을 찾았습니다. 오직 FileInputStream을 닫으면 작동합니다 :) – Jhon

+0

하지만이 솔루션과 'src'폴더는 Eclipse에서만 실행됩니다. "생산"환경에서는 'src'- 폴더가 없으므로 – Mark

0

바람둥이가 속성을 올바르게 읽지 않고 배포하는 것처럼 들립니다.

Eclipse를 통해 Tomcat에 전개 할 때 프로젝트의 파일을 [eclipse workspace] /. metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/섬기는 사람]. 또한 구성한 내용에 따라 출력 디렉토리에 복사 할 수도 있습니다.

제대로 이해한다면 작업 공간 파일 /src/main/resources/fooMessages_fr_FR.properties에 저장 하시겠습니까? 이클립스는 클릭 할 때까지이 파일이 업데이트되었음을 ​​알지 못한다.이 파일을 .plugins/blah에 복사하면 모든 것이 올바르게 작동한다.

Eclipse 외부에 배포하는 경우 작업 영역에서 배포 디렉토리로 복사되지 않으므로이 기능이 올바르게 작동합니다.

이 문제가 계속되는 경우 아파치 커먼 FileChangedReloadingStrategy을 살펴보고 변경된 속성 파일을 다시로드 할 수 있습니다. /integrationContinue/src/main/resources/fooMessages_fr_FR.properties : 나는 "C를 대체

관련 문제