2016-10-19 2 views
0

나는 Hibernate 5.0.3과 tomcat8 서버를 사용하고있다.자바 빈에서 요청시 "상수"값을 변경하는 방법 (최대 절전 모드)?

나머지 Json 응답의 첫 번째 부분 (객체)에는 오류 메시지, httpcode, api 버전 및 app 버전에 대한 데이터가 있습니다. MessageJson이라고 불리는 두 번째 부분은 사용자가 요청한 객체/반환 값입니다.

서버를 다시 시작하고 새로운 .war를 업로드하지 않고 즉시 appVersion atribute의 값을 구현하거나 변경하는 방법은 무엇입니까?

public class ResponseJson { 

    private MessageJson message; 
    private Object body; 

    public ResponseJson (MessageJson message, Object body) { 
     this.body = body; 
     this.message = message; 
    } 

은 .properties의 모든 시간을 파일 또는이다에서 값을 읽을 최대 절전 모드 않습니다 값이 저장 않습니다

여기
public class MessageJson { 

    private int httpCode; 
    private String errorMessage; 
    private String apiVer; 
    private String appVersion ; 

    public MessageJson (int httpCode, String errorMessage) { 
     this.httpCode = httpCode; 
     this.errorMessage = errorMessage; 
     this.apiVer = "0.905"; 
     this.appVersion = "1.350";//How to change this value without restarting server? And without reading from DB on every single request from api? 

    } 
} 

이 API의 반환 완전한 객체/JSON의 구조 : Atribute 아래 코드에 표시되어 RAM에?

모든 호출시 DB에서 요청하지 않고 이러한 종류의 변수 값을 업데이트하는 가장 효율적인 방법은 무엇입니까? 위의 예와 같이 램에 저장하는 방법이 있습니까? DB 또는 특정 파일에서 변경되었을 때 확인 만하면됩니까? 확인을 요청하면 새 값이 클래스의 기존 값보다 우선합니다.

예 : 각 요청 값 양식 클래스 (1.350)가 반환됩니다. 관리자가 변경 요청을 한 후에 DB에 새로운 값 "1.500"이 생기고 오래된 값 (1.350)이 오버라이드됩니다. 다음에 사용자가 호출 할 때마다 DB 또는 파일에서 확인하지 않고 1.500 만 반환합니다.

답변

1

당신은

은 기본적으로 샘플 속성 파일에 appVersion이 아래의 세부 사항과의 전쟁 파일에 config.properties 말 다시로드 자동 지원 Apache Commons Configuration 같은 것을 사용할 수

appVersion=1.35 
key=Value 
... 
... 

그런 다음 사용할 수있다 Apache Commons Configuration API은 코드에서 필요할 때마다 등록 정보 파일을로드, 읽기 및 업데이트합니다.

이렇게하면 서버를 다시 시작하지 않고도 속성을 생성/읽기/업데이트 할 수 있습니다.

최대 절전 모드의 경우, 해당 속성과 매핑 파일은 모두 싱글 톤인 SessionFactory 인스턴스 안에 들어있다. 이 sessionFactory 인스턴스는 매우 가중치가 높으며 응용 프로그램 전체에서 공유되며 불변입니다.

응용 프로그램이 오류가 발생하여 일관성이 없어 질 수 있으므로 바람직하지는 않지만 SessionFactory 인스턴스를 삭제하고 다른 인스턴스를 만들 수는 있지만 Session 인스턴스 중 하나도 해당 인스턴스를 참조하지 않아야합니다. 잠시 동안 그렇게하면 피해 통제 작업을 준비하십시오.

+0

제안 해 주셔서 감사합니다. 'commons-configuration2' (새로운 것)을 시도했지만 파일에서 읽었지만 자동 재로드 값으로 가져올 수는 없습니다. 나는 또한 오래된'v1.10'을 시도했다. 서버를 다시 시작한 후 처음으로 값을 읽으며 FileChangedReloadingStrategy는 아무 작업도 수행하지 않습니다. 나는'/ resources /'폴더에'config.properties' 파일을 가지고 있습니다. atributes의 가치를 손으로 바꿀 때 읽지 않습니다. – AndroidTank

+0

@AndroidTank 안녕하십니까,이 [link] (https://commons.apache.org/proper/commons-configuration/userguide/howto_reloading.html)를 살펴볼 기회가 있습니까? 가지고 계신 것을 게시 할 수 있습니까? 해봤습니까? – Kamal