2016-06-03 3 views
1

모든 GUI 화면에서 계정의 잔액이 업데이트되도록 수정해야하는 은행 애플리케이션을 제공했습니다. 이 예에서는 RMI (Observable)를 사용해야합니다. 나는 이미이 작품을 만들었는데 적어도 나는 그것에 대해 거의 확실하다.Java 원격 인터페이스가 내 GUI 사용을 차단합니다.

IBankingSession이라는 원격 인터페이스가 있습니다. 이 REMOTE 인터페이스는 setGUI(BankSessionController) 또는 이와 비슷한 메소드가 있어야합니다. 그러나 JavaFX 부분이 Serializable이 아니기 때문에 이는 불가능합니다. IBankingSession은 GUI와 관계가 없습니다. IBankingSession의 인스턴스를이 GUI에 어떻게 연결할 수 있습니까? 그래서이 인스턴스에서 GUI를 업데이트 할 수 있습니까? REMOTE 인터페이스에서 setGUI과 같은 메서드를 만드는 것도 기분이 이상합니다. 물론 GUI는 세션이 만들어진 화면과 동일한 화면에 있기 때문에.

나는 좋은 생각이 있습니다. 미리 감사드립니다.

IBankingSession session = desk.logIn(tfAccount.getText(), tfPassword.getText()); 

답변

2

우선 무엇보다도 "원격"장치를 사용하는 로컬 클라이언트에 직접 연결하고 싶지 않습니다. IBankingSession은 고객이 JavaFx를 사용하여 사용자 화면에 무엇인가 넣으 려한다는 사실에 대해 알지 못합니다.

대신,이 같은 시도 : ("푸시"모델의 어떤 종류 즉) : 콜백을 허용하는 인터페이스를 정의

클라이언트가 원격 서버에 등록; "나는 균형 업데이트에 관심이 있습니다."

그런 다음 "균형"업데이트시 원격 서비스는 해당 정보를 각 클라이언트에 보냅니다.

이제 각 클라이언트에 알림이 전송됩니다. 들어오는 업데이트로 무엇을 할 것인지 결정할 수 있습니다. 예를 들어 일부 JavaFx UI 구성 요소를 업데이트합니다. 또는 일부 영구 저장 장치에 로그 할 수 있습니다. 매우 다양한 사용 사례에 유용 할 수있는 하나의 메커니즘을 제공합니다.

2

당신은 관측 대상을 전혀 사용하지 말아야하며 확실히 네트워크를 통해 사용해서는 안됩니다.

RMI가 실행되는 한, 클라이언트 측 콜백의 특성상 무엇인가를 철저히 피해야합니다. 방화벽 문제, 대기 시간 문제, 연결 문제 등 ... 클라이언트가 오작동 할 수있는 모든 종류의 문제가 있습니다.

완전히 다시 생각해 봐야합니다. 그것은 실행 가능한 디자인이 아닙니다.