JavaRMI создает один ServerSocket, когда какой-либо объект экспортируется? - PullRequest
0 голосов
/ 21 мая 2018

Я новичок в Java и JavaRMI, поэтому у меня есть некоторые сомнения относительно того, как это работает, см. Ниже:

public interface Something implements Remote {...}

public SomeStub extends UnicastRemoteObject implements Something {...}

Каждый раз, когда я создаю и связываю (registry.rebind(...)) один объект SomeStubЯ создаю новый ServerSocket для прослушивания вызовов только для этого объекта?

Пример:

registry.rebind("...", new obj1);
registry.rebind("...", new obj2);
registry.rebind("...", new obj3).

2) Поэтому, если вопрос 1 верен, лучше использовать только одну заглушкуэтого объекта и потоков, чтобы избежать создания множества серверных сокетов?

PS: я использую фабрики сокетов и сокетов по умолчанию, предоставляемые JavaRMI.

1 Ответ

0 голосов
/ 21 мая 2018

Каждый раз, когда я создаю и связываю (registry.rebind(...)) один объект из SomeStub Я создаю новый ServerSocket для прослушивания вызовов только для этого объекта?

Нет,Каждый раз, когда вы экспортируете новый удаленный объект, RMI пытается выполнить совместное использование порта и создает новый ServerSocket, только если у него его еще нет, он может поделиться с новым объектом.

Привязка не имеет ничего общегос этим.

NB Это не заглушка .Это удаленный объект, и он имеет свою собственную заглушку, созданную RMI.Не злоупотребляйте стандартными именами.Назовите это как-нибудь еще.

Так что, если вопрос 1 верен

Это не так.

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

Нет.

...