2014-01-10 2 views
3

여러 개의 방을 갖춘 RMI 채팅 서버를 구성하려고합니다. 그러나 RMI에 익숙하지 않아 관찰자 패턴을 올바르게 구현하는 방법이나 내 전제가 실제로 의미가있는 지 여부는 확실하지 않습니다.RMI를 통한 관찰자 패턴 구현

나는 ChatServer 개체와 ChatUser (클라이언트) 개체를 가지고 있습니다. ChatServer에는 ChatRoom 개체 목록이 포함되어 있습니다.

ChatRoomUnicastRemoteObject입니다. 그러나 여기서 관찰자 패턴을 구현하고 ChatRoomObservable까지 확장 할 수 있습니다. 물론 자바에서는 수행 할 수 없습니다.

아이디어는 관찰자 패턴을 사용하여 ChatRoom이 새 메시지를 받으면 모든 클라이언트가 업데이트를 수신하도록하는 것이 었습니다.

그런 상황에서 실제로 어떤 종류의 관찰자 패턴을 구현하는 방법이 있는지 궁금합니다. Google에서 사전 점검을 해봤지만 대부분의 솔루션은 매우 복잡한 경향이 있거나 너무 위에있는 경향이 있습니다.

그렇지 않으면 근본적으로 내가 여기있는 일을하는 방식에 문제가 있습니까? 사전에

감사)

+2

RMI를 작성한 이후로 시간이 지났지 만 객체를 수동으로 내보내려면'UnicastRemoteObject'를 확장 할 필요가 없습니다. 이전 프로젝트에서 코드 샘플을 생성 해 보겠다.하지만 원격 객체를 내보내는 데 대한 오라클 문서를 살펴 보자. –

+1

RMI를 사용해야하는 특별한 이유가 있습니까? – dimoniy

+1

ChatRoom은 Observable 일 필요는 없지만 실제로 클라이언트가 등록하는 Observer를 포함 할 수 있습니다. RMI 콜 백 검색을 고려할 수도 있습니다 – MadProgrammer

답변

1

예, 당신은 단순히 당신의 ChatRoom 인터페이스에 register(ChatClient) 방법을 선언 할 수 있습니다. ChatClientRemote까지 확장해야하며 ChatServerChatRoom 인터페이스처럼 원격 개체로 내 보내야합니다. ChatClient은 대화방에서 메시지를 수신 할 수있는 콜백 메소드를 선언합니다.