Обмен сообщениями о событиях между удаленными системами немного сложен. Вот что должно произойти:
Клиент должен зарегистрировать интерес к событиям, запущенным на стороне сервера. Для регистрации клиент должен быть удаленно доступен для объекта источника события.
Чтобы иметь возможность зарегистрироваться, клиент должен сначала найти сервер, поэтому объект сервера должен быть удаленно доступен для клиента.
Крик, верно? И это простой шаблон для реализации удаленной обработки событий.
Несколько недель назад я начал учебник, который был направлен по этому пути - он прямо здесь, и я надеюсь добавить что-то к нему до конца недели. Увы, необходимость сделать арендную плату помешала, и я не могу добавить к ней так быстро, как хотелось бы.
Если вы не можете ждать, однако, это ключ: обе стороны должны быть доступны удаленно для работы системы обмена сообщениями.
этот сервер, а также клиент должны быть удаленными объектами.
Пусть все клиенты реализуют интерфейс Remote.
RemoteClientIfc extends Remote {
void inform();
}
//have a remote method register() on the *Server* object which accepts RemoteClientIfc.
//c'd be something like this...
register(RemoteClientIfc client){
arrayListofClients.add(client);
}
//So client will do a look up on the remote server object and register itself.
remoteObj.register(clientInstance);
//In the remote server you
//can probably have another method to send notifications to the client.
//Run through the ArrayList and call
//inform() on each of them.
//Thus the client will receive notification.
tellClients(){
Iterator i = ....
while (i.hasNext()){
((RemoteClientIfc).i.next()).inform();
}
}