Краткий ответ: это будет другая тема наверняка.
Длинный: подумай об этом. Когда jack @ A
host вызывает foo() @ B
host, поток jack @ A
блокируется в ожидании ответа foo()
. Поэтому, когда foo() @ B
вызывает bar() @ A
, jack @ A
гарантированно будет все еще ждать, следовательно, bar()
не будет обработан им.
Также обратите внимание, что существует отдельный пул потоков для обработки вызовов клиента RMI на стороне сервера. Поэтому, скорее всего, ваш поток jack
на самом деле является потоком приложения, и RMI не имеет к нему доступа. Если вызов foo() @ B
с помощью jack
потока также не был инициирован внешним вызовом RMI (слишком много обратных вызовов, паника ).