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




Я еще не изучал это всесторонне, но, ища проект, над которым я сейчас работаю, я наткнулся на ЛипеРМИ.
Возможно, вы захотите взглянуть на него, поскольку он ориентирован на использование Интернета и упоминает «затенять клиентов таким образом, чтобы они могли находиться за локальной сетью, маршрутизатором или межсетевым экраном»;
Редактировать:
Вспомнил другую реализацию, с которой я столкнулся некоторое время назад, под названием RMI Doves 1.0: решение проблемы межсетевого экрана Java RMI, вы, возможно, захотите взглянуть и на эту.
Если код сервера находится у вас в руках, вы также можете ограничить RMI для использования заранее определенного порта, предоставив настраиваемый RMISocketFactory, как описано здесь: http://insidecoffe.blogspot.com/2012/02/firewall-friently-rmi-port-fixing.html
(Обратите особое внимание на подсказку, что это может вызвать проблемы, если вы используете JMX параллельно)
на вашем сервере поместите такой код:
RmiInterface stub = (RmiInterface) UnicastRemoteObject.exportObject(rmi, 35400);
LocateRegistry.createRegistry(1099);
Naming.rebind("//192.168.102.128:1099/rmi", stub);
Не могли бы вы подробнее рассказать о том, чего пытаетесь достичь? Вы в основном хотите, чтобы клиент-апплет взаимодействовал с сервером с использованием RMI с межсетевым экраном между ними?