2016-09-19 5 views
0

Я знаю, как сделать сеанс шаблона без обратных вызовов, как здесь How to organize RMI Client-Server architecture. Но я не знаю, как это сделать с обратными вызовами. Нужен ли мне другой объект сеанса для перехода клиента на сервер при входе в систему? Если да, где я держу его на стороне сервера: держите ссылку сеанса клиента в сеансе сервера или коллекцию всех клиентских сеансов в другом месте, например, на сервере входа? Если нет объекта, который реализует методы обратного вызова клиента?Как сделать шаблон сеанса с обратными вызовами?

Возможно, кто-то может привести пример кода, как в вопросе, который я связал, потому что этот был ясен, и я не нашел его для обратных вызовов.

Ответ не обязательно должен быть строго RMI, но я видел много вопросов об этом без ответов, поэтому я добавил тег.

+1

Спасибо за немедленное сокращение без объяснения моего первого вопроса на этом сайте после того, как я сам помог другим. очень хорошо – Mark

ответ

1

Вам нужен удаленный объект , чтобы клиент мог перейти на сервер, на который вызывается обратный вызов. Скорее всего, это объект сеанса, учитывая, что вы его отправляете при входе в систему, но информации здесь недостаточно. Это зависит от того, кем вы хотите.

Если вы хотите это будет объект сеанса, то есть один, который является уникальным для сеанса и не выжить, вы должны обеспечить:

  1. Это клиент unexports его при выходе из и
  2. То, что сервер теряет ссылку на этот объект при выходе из системы, что легко сделать, сохранив его в выделенном сервером объекте сеанса.
+0

OK Я делаю 1 и 2 уже. Я был смущен, когда вы сказали: «Объект сеанса также содержит обратный вызов». в другом ответе здесь http://stackoverflow.com/questions/35781694/how-to-properly-identify-and-hold-client-references-in-rmi-callback/35784285#comment66398832_35784285. я не понял, содержит ли объект сеанса сервера сеанс клиента или что-то подобное, потому что вы сказали «также». что вы имели в виду, пожалуйста? – Mark

+0

Это точно так же, как я сказал в этом ответе на (2). – EJP

+0

А в порядке да. Итак, есть ли причина, по которой сеанс обратного вызова реализует Unreferenced, или это сеанс сервера, реализующий его достаточно, потому что через него осуществляется только ссылка на сеанс клиента? второе: теперь сервер должен хранить список/карту объектов сеанса сервера, которые он использует для получения объектов сеанса клиента, если он хочет сделать что-то вроде отправки сообщения всем клиентам, правильно ли это? – Mark

 Смежные вопросы

  • Нет связанных вопросов^_^