Связь апплета Java с приложением Rails - PullRequest
2 голосов
/ 24 мая 2009

Я создаю приложение Rails, и на нем должен быть Java-апплет.

Мой вопрос и проблема в том, что апплет должен быть тесно интегрирован с частями Rails. Я должен быть в состоянии получить список всех пользователей, обновить изображение и т. Д. И в Интернете доступно удивительно небольшое количество информации о том, как использовать апплеты с Rails. Поэтому, пожалуйста, дайте мне несколько советов. Каков наилучший способ сделать это?

  1. Отправить параметры в апплет?
  2. Использовать REST-интерфейс Rails из апплета?
  3. Как-нибудь использовать JRuby?
  4. Другое ....

Спасибо!

Ответы [ 3 ]

2 голосов
/ 25 мая 2009

Можете ли вы предоставить более подробную информацию? А пока что я отвечу на ваши вопросы:

  1. Отправить параметры в апплет?

Ваше приложение rails сможет обслуживать апплет, но после его обслуживания я не думаю, что вы сможете отправлять на него сообщения (однако вы сможете отвечать на сообщения из него, что, возможно, является тем, о чем вы просите) .

  1. Использовать REST-интерфейс Rails из апплета?

Вы как бы сами ответили на этот вопрос. REST - это дизайн интерфейса, поэтому к нему можно получить доступ из всего, что может выдать запрос HTTP. Хитрость заключается в том, чтобы правильно построить URL, чтобы rails знал, что вы хотите сделать. Хорошая информация о настройке маршрутов рельсов (REST и non-REST) ​​здесь http://guides.rubyonrails.org/routing.html

  1. Как-нибудь использовать JRuby?

Вы можете использовать jruby для этого, но вам это не нужно. Ваш сервер (rails) и ваш клиент (браузер / апплет) общаются друг с другом через http, поэтому вам не нужно использовать один и тот же язык или работать на одной и той же виртуальной машине.

Надеюсь, что поможет ....

1 голос
/ 25 мая 2009

Я думаю, что причина, по которой вы, вероятно, не нашли ничего особенного в Апплетах и ​​Rails, заключается в том, что они функционируют немного на разных уровнях и на самом деле не зависят друг от друга. Похоже, что Роб пытался прояснить некоторые вещи, поэтому я сделаю еще один шаг, чтобы убедиться, что мы все на одной странице.

Работа Rails заключается в том, чтобы генерировать и обслуживать HTML / XML / Javascript / изображения через веб-сервер для веб-браузера пользователя для рендеринга. Частью этого HTML будет тег APPLET (или, возможно, OBJECT), который инструктирует браузер загрузить апплет. Обычно это инструктирует браузер вызывать плагин Java и позволяет ему обрабатывать загрузку апплета. Однако после загрузки и запуска, даже несмотря на то, что апплет отображается на текущей веб-странице в браузере (или, может быть, даже в другом окне), он действительно не очень осведомлен о веб-странице, в которой он находится. По большей части апплетам нет дела до браузера или страницы, частью которой они являются. Поэтому, если апплет нуждается в дополнительной информации или запрашивает данные, он обычно просто отправляет HTTP-запрос на сервер, с которого он пришел. Затем он проанализирует данные и обновит себя.

Я предполагаю, что вам, вероятно, нужно, чтобы что-то было щелкнуто или введено в апплет, и чтобы эти данные использовались для обновления веб-страницы, которую Rails передает браузеру. С апплетом у вас есть 2 варианта:

  1. Используйте приложение веб-сервера для обмена информацией о состоянии
  2. Использование связи Java-Javascript с использованием JSObject, как указано в http://java.sun.com/products/plugin/1.3/docs/jsobject.html

Честно говоря, вариант № 2 имеет так много предостережений, что я бы никогда не использовал его, если бы у вас не было полного контроля над версиями браузера и Java во всех системах потенциальных пользователей. Даже тогда я был бы обеспокоен обновлением чего-то, что могло бы его сломать.

В основном, вариант номер 1 оставляет вам апплет и Javascript / HTML, периодически опрашивающий веб-сервер (Rails), чтобы увидеть, есть ли какие-либо обновления или запросы, на которые они должны ответить для обмена данными. Если апплет обновляется пользователем, он отправляет сообщение на веб-сервер с помощью запроса / публикации URL-адреса, и следующий запрос (вероятно, с помощью AJAX-подобного вызова) веб-страницы увидит новые данные, а веб-страница обновиться этим.

Надеюсь, это поможет.

0 голосов
/ 25 мая 2009

Два действительно хороших ответа. Я очень ценю их, спасибо!

Чтение ваших постов заставило меня понять, что лучший выбор - использовать HTTP-запросы к REST-интерфейсу Rails. Тем не менее, я вижу некоторые недостатки этого подхода. Но я не вижу лучшего решения для этого. Одной из функций, которые должен иметь апплет, является возможность просмотра и поиска по всем продуктам, которых может быть довольно много. Отправка HTTP-запроса для каждого поиска будет дорогой. Возможно, я мог бы решить эту проблему, загрузив все продукты при запуске апплета. Тогда просмотр и поиск будут быстрыми. Или, может быть, сделать хорошее кэширование. Поэтому, как только они найдены, я больше их не получаю.

О том, что не нашел много информации об этом в сети. Я вижу вашу точку зрения Монсо. Но ... я все еще думаю, что должно быть больше. Я имею в виду, что в моей ситуации мне бы очень хотелось, чтобы специфичная для Rails библиотека помогала мне отправлять запросы на правильные URL. Плохая Java не настолько динамична. Трудно сделать что-то автоматически, как в Ruby и Rails. Может быть, я напишу небольшую библиотеку для этого. Я имею в виду, я должен написать это в любом случае. Так почему бы не сделать из этого библиотеку? Некоторые люди могут использовать его.

...