Когда я должен позвонить Naming.unbind ()? - PullRequest
0 голосов
/ 13 октября 2008

У меня есть код, который я делаю доступным через RMI.

Если моя программа завершится ненормально, я не буду вызывать Naming.unbind (), и ссылка на объект будет, вероятно, зависать в реестре RMI, и последующие вызовы Naming.bind () с тем же именем потерпит неудачу.

Как мне удостовериться, что мошеннические ссылки очищены?

1 Ответ

0 голосов
/ 13 октября 2008

Существует нечто, называемое распределенным сборщиком мусора (DGC). Он использует аренду для отслеживания устаревших привязок и будет собирать их, когда они не используются. Установите системное свойство leaseValue экспортирующей JVM, чтобы определить, когда истекает срок действия привязки.

Установка слишком низкого значения приведет к увеличению сетевого трафика. Установка слишком высокого значения приведет к тому, что устаревшие ссылки будут храниться слишком долго. Вы можете вызвать идемпотентный метод после поиска на стороне клиента, просто чтобы убедиться, что объект жив (или использовать что-то вроде интеллектуальных заглушек Weblogic). На стороне сервера вы можете проверить реестр и, если привязка существует, либо отменить ее регистрацию (если она устарела), удалить удаленный объект и экспортировать новый, либо просто оставить его (если он активен).

...