Как использовать RMI с клиентом апплета за брандмауэром? - PullRequest
6 голосов
/ 22 января 2009

Как я могу использовать RMI с клиентом апплета за брандмауэром?

Как я могу использовать RMI с сервером с брандмауэром и клиентом апплета с брандмауэром? (Если возможно)

Я знаю, что сервер RMI использует порт 1099 (по умолчанию, но это настраивается); однако после этого для связи требуется новый сокет на другом случайном порте. Я также знаю, что вы можете установить прокси на клиенте для RMI через HTTP туннелирование, которое теоретически должно решить мою проблему. Но я не могу заставить его работать (я пытался установить свойства среды на моем клиенте XP, но Internet Explorer продолжает игнорировать их).

Ответы [ 4 ]

6 голосов
/ 01 февраля 2009
1 голос
/ 02 февраля 2012

Если код сервера находится у вас в руках, вы также можете ограничить RMI для использования предопределенного порта, предоставив пользовательский RMISocketFactory, как описано здесь: http://insidecoffe.blogspot.com/2012/02/firewall-friently-rmi-port-fixing.html

(Обратите особое внимание на подсказку, что это может вызвать проблемы при параллельном использовании JMX)

0 голосов
/ 19 апреля 2013

на вашем сервере поместите код так:

RmiInterface stub = (RmiInterface) UnicastRemoteObject.exportObject(rmi, 35400);
LocateRegistry.createRegistry(1099);
Naming.rebind("//192.168.102.128:1099/rmi", stub);
0 голосов
/ 01 февраля 2009

Я еще не глубоко в этом разбирался, но, глядя на проект, которым я сейчас занимаюсь, я наткнулся на LipeRMI .

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

Edit:

Вспомнил еще одну реализацию, которую я встречал некоторое время назад, под названием RMI Doves 1.0: решение проблемы брандмауэра Java RMI вы также можете взглянуть и на эту.

...