Java-апплет взаимодействует с сервлетом на сервере Tomcat - PullRequest
1 голос
/ 17 июня 2011

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

У меня есть игровой апплет, написанный на Java, который я пытаюсь сделать многопользовательским по сети. На данный момент это отдельное приложение, но в конечном итоге оно должно быть на какой-то веб-странице, где клиенты могут получить к ней доступ через браузер и играть друг против друга.

Я думал, что каждый клиентский апплет может взаимодействовать через сокеты с апплетом, который постоянно работает на сервере Tomcat. Этот апплет на сервере будет обрабатывать входящие соединения сокетов, создавать новые потоки для обработки каждого соединения, вести список подключенных клиентов и настраивать игры. Клиенты могут также получать информацию из базы данных о прошлых играх и т. Д., Общаясь с сервером.

Например, я хочу, чтобы клиент мог начать игру. Затем другие клиенты уведомляются о том, что он запустил игру и может присоединиться к ней. Затем, когда хост нажимает кнопку «начать игру», все остальные клиенты получают уведомление, и игра начинается в их апплете. Тот, кто решит головоломку первым, затем щелкнет готово Его оценка будет отправлена ​​на серверный апплет, который затем перенаправит результат каждому подключенному клиенту.

Итак, у меня есть несколько вопросов

  1. Звучит ли это как разумный план?

  2. Как Tomcat помогает с этим?

  3. Как бы я развернул его на Tomcat? Я делаю это в затмении и установил добавленный локальный сервер Tomcat. Должен ли я просто запустить класс на сервере с помощью eclipse, а затем подключить сокет к http://localhost/packagename/classname в апплете?

  4. Какие классы необходимо расширить сервлету, чтобы сделать его подключаемым? Поскольку соединения будут выполняться из апплета, должен ли сервлет быть не-Http-сервлетом?

  5. Можете ли вы порекомендовать некоторую документацию или предоставить пример кода клиентского апплета, взаимодействующего с серверным апплетом с помощью tomcat? Все примеры, которые я видел, - это только HTML-формы, которые передают информацию сервлету с помощью Http.

Ответы [ 2 ]

1 голос
/ 17 июня 2011

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

Одним из вариантов может быть HTTP / JSON.Ваш апплет может установить HTTP-соединение с сервлетом, и этот сервлет сгенерирует объект JSON, представляющий сообщение, которое сервер хочет отправить клиенту.Клиент запустит поток, который будет зацикливаться, делая асинхронный блокирующий вызов вашего сервлета для опроса новых данных.

Основным преимуществом этого подхода является то, что в будущем, если вы будете так склонны, выможет отказаться от клиентского Java-апплета и заменить его HTML5 и Javascript.

GSON - это библиотека, используемая для сериализации / десериализации JSON.И java.net.URL - это то, что вы использовали бы для подключения к сервлету внутри вашего апплета.

0 голосов
/ 17 июня 2011

Да.То, что вы описываете, это связь апплет-сервлетКак правило, ваш апплет будет отправлять сообщения сервлету, который затем будет отслеживать связь со всеми другими клиентскими апплетами.

Есть несколько примеров связи апплета с сервлетом онлайн.Вот один старый, но все еще действующий, и код не отформатирован.

http://docstore.mik.ua/orelly/java-ent/servlet/ch10_01.htm

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...