RMI или сервлеты для отправки объектов в / из апплета через брандмауэры? - PullRequest
0 голосов
/ 22 октября 2011

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

Я склоняюсь к сервлетам.Основным недостатком является время, чтобы узнать, как собрать все воедино (apache, tomcat, servlets).

Однако RMI кажется (на первый взгляд) более простым, но чтение часто задаваемых вопросов Oracle о брандмауэрах приводит меня кдумаю, что это не всегда работает.Более того, я не видел хорошего руководства о том, как он работает с apache, когда они совместно используют порт.

Учитывая ограничения: (1) должен использовать Java-апплеты для клиентов, (2) не иметь контроля над клиентами'firewalls, (3) я хороший программист-любитель, но не профессионал, и у меня нет средств, чтобы нанять профессионала, какой путь лучше выбрать, или у вас есть другое решение?

1 Ответ

2 голосов
/ 22 октября 2011

Учитывая, что все это в настоящее время работает через RMI, я бы склонялся к туннелированию RMI через HTTP . Я никогда не делал этого, но это древняя особенность RMI, которая должна работать надежно.

Вы говорите о совместном использовании порта с Apache. Вы не можете сделать это на самом деле - только один процесс может прослушивать любой данный порт. Однако, что вы можете сделать, это установить Apache на порт 80 и настроить его для пересылки запросов в RMI, которая может прослушивать другой порт. Вы можете сделать это, потому что (если я правильно читаю!) Запутанный в кишечнике метода RMI-over-HTTP путь /cgi-bin/java-rmi.cgi. Вы можете использовать знаменитый Apache mod_rewrite , чтобы перехватывать запросы к этому пути и передавать их процессу Java на своем порту. Вы даже можете разместить процесс RMI на совершенно другом хосте и передавать ему запросы по сети.

...