2016-09-01 1 views
0

일부 구성의 경우 config.properties를 읽어야합니다. 나는 요구 사항을 충족시키기 위해 어떤 방식 으로든 개방적이다.config.properties를 읽는 방법 j2ee

쉽게 변경할 수 있도록 내 전쟁 파일 외부에서 원하고 재구성 할 필요가 없습니다.

나는 어디에서나 찾았지만 어떻게 할 수 없는지, 나는 이것이 자바 101이라고 확신하지만, 그럴 수 없다.

클래스 로더를 사용해 보았지만 전쟁에서 리소스 만로드하는 것처럼 보였습니다. 내 서버에 전쟁을로드 한 위치를 가져 오는 방법을 찾을 수 없습니다. 명령 줄 매개 변수를 통해 인수를 전달할 수있는 방법을 찾지 못했습니다. 코드의 아무 곳이나 액세스 할 수있는 비누 끝 점입니까?

나는이 Where to place and how to read configuration resource files in servlet based application? 을보고 나는 파일 시스템 접근법을 사용하고 싶지만 설정 파일에 하드 코딩 된 경로는 원하지 않는다.

나는 단순하고 쉬운 것을 원한다. 나는 무엇인가 알고 있지만 나는 그것을 찾을 수 없다.

+0

프로젝트 외부에서 클래스 패스를 퍼팅 할 때 복제본에 암시 된 것과 같이 잘못된 점은 무엇입니까? – BalusC

+0

@BalusC 작동하지 않습니다. 창문에 컴퓨터 환경 PATH를 추가했지만로드하지 않습니다. weblogic에서 java의 클래스 경로에 폴더를 추가하는 방법을 모르겠습니까? – f1wade

답변

0

이 내용이 사용자의 질문에 도움이됩니다. 나는 생각한다. 하나의 방법 ABCD에서

public static String abcd(String one) { 
    properties = new Properties(); 
      properties.load(<classNmae>.class.getClassLoader().getResourceAsStream("AppResources.properties")); 
return properties.getProperty(one); 

호출이 코드

String fileLocation = abcd("internal property file"); 

      Properties properties = new Properties(); 
     FileInputStream fis = new FileInputStream(fileLocation); 
     properties.load(fis); 
     fis.close(); 

     acd = (String)properties.get("acd"); 

참고 : /aaa.properties 다음 파일 두 번째 방법으로 외부의 속성을 읽어 AppResources.properties 외부 파일 위치 D가 파일

+0

이 작동하지만 내 외부 속성 파일의 위치를 ​​효과적으로 하드 코딩하여 다시 컴파일하고 WAR를 변경해야합니다. – f1wade

0

쉽게 변경할 수 있도록 내 전쟁 파일 외부에서 원하고 재구성 할 필요가 없습니다.

당신이 그것을 원하지만 그냥이 답변을, 우리는 우리의 웹 응용 프로그램이 위치 /apps/servers/webserver-1, /apps/servers/webserver-2에있는 웹 서버에 배포되는 유사한 시나리오를 얼마나되지 않을 수 있습니다. 그리고 우리는 /apps/my-web-app1/app.properties/apps/my-web-app2/app.properties 같은 다른 위치에 속성을 배치했습니다.

이 구조체에 대한 좋은 점은 속성을 업데이트해야하는 경우 상대 속성에서 편집을 수행하고 웹 서버를 다시 시작한다는 것입니다. 이것의 단점은 웹 서버 스타트 업 스크립트 (이 경우에는 catalina.sh 파일이다. 예, tomcats를 사용하고있다)의 시스템 인수로이 특성 파일에 대한 경로를 전달해야한다는 것이다.

그래서 내 catalina.sh 어딘가에 이러한 속성을 읽을 수

export JAVA_ARGS `-Dpath.to.properties.of.my-web-app2=/apps/my-web-app2/app.properties` .... 

같은 것을 주위에 거짓말을 라인을 가지고, 나는 각 응용 프로그램의 StartupServlets에 의해 호출되는 속성 유틸리티 기능을 가지고있다. 이 함수의 목적은 단순히 시스템 속성 path.to.properties.of.my-web-app2을 읽어이 파일을 열어 이러한 속성을 캐시 (응용 프로그램 전체에서 쉽게 액세스 할 수있는 곳)의 캐시 (내 경우에는 HashMap)에 넣는 것입니다.

+0

그게 내가 원하는 것 같아요,하지만 난 여전히 작동하도록하는 방법에 관해서는 여전히 불분명 해요, 자바에서 어떤 코드를 사용합니까? 추가 폴더가있는 weblogic/netbeans를 구성하는 방법은 무엇입니까? – f1wade