2014-11-10 2 views
1

Каковы наилучшие методы работы с двумя приложениями на том же хосте, один J2EE и другой автономный Java, обмениваются данными друг с другом?Коммуникации автономных приложений J2EE-Java

Больше информации:

  • Приложение j2ee будет deplyed в Wildfly AS
  • The Java стоять в одиночку является сервер Нетти NiO

EDIT ONE Еще более подробной информации:

  • Netty-сервер - это сервер с карточной игрой, который будет содержать бизнес-логику для самой игры и позволит игрокам играть синхронно друг с другом (до четырех игроков за игру, до максимального количества игр, разрешенных с моих ресурсов сервера hw)
  • применение J2ee (развернут в Одичало) будет заботиться о аутентификации & авторизации
  • применение J2ee будет заботиться о соединении DB и персистенции
  • Приложение J2ee будет пересылать на сервер Java автономный remote-socket-address аутентифицированного игрока и в конечном итоге объект, в котором находится состояние этого игрока
  • J2ee приложение будет потенциально быть тем, кто запускает связь, хотя для моего текущего потока мне нужна полная дуплексная связь с обоих концов (следовательно, мой страх перед WS или Rest, разве это не асимметрично для полнодуплексного канала связи ?)
  • сервер Нетти может рассматриваться в качестве фоновой задачи в AS, который начнет его (и в конечном счете другие серверы cardgame) в попытке псевдо horizzontal масштабируемости
+0

Сделайте это так, как вы наиболее знакомы и комфорте. J2EE-приложение не влияет на то, как он может взаимодействовать с другими приложениями. –

ответ

0

Иметь один открытый сокет и сообщить другой.

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

  1. читать и писать из названных труб
  2. Настройка общего буфера памяти, или два. и т.д ...
+0

Просто хочу добавить, что связь сокетов не зависит от Java или jee. Вы можете общаться и интегрировать Java с любым сетевым приложением, и лучший способ - не изобретать колесо, а использовать http (aka rest) или веб-службы, а не собственный собственный протокол сокетов. – kulatamicuda

+0

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

+0

Да, это правда, общение всегда зависит от контекста. Существует хорошая речь об этом здесь http://oredev.org/2010/sessions/pragmatic-interoperability-making-java-and-net-play-well-together – kulatamicuda

0

Я думаю, что это не возможно, чтобы дать хороший образец реализации, когда вы не ясны/Явный о следующих актуальных вопросов:

  1. ли отдельное приложение фоновое задание (возможно, запущен с контейнером)?
  2. Если да, то как J2EE, так и автономный должны иметь общий доступ к сеансу или данные разговора?
  3. Кто вызывает связь при общении?
  4. Возможно ли, что оба приложения могут совместно использовать одну и ту же базовую базу данных?
+0

у меня есть отредактировал мой вопрос соответственно – MenelaoEE

+0

Не зная Netty NIO Я не уверен, что релевантно/применимо: как насчет рассмотрения постоянной связи через хранилище данных? –

+0

Вы имеете в виду (в данном случае), чтобы два приложения имели одну и ту же БД? Я опасаюсь, что Netty - сервер NIO (неблокирующий входной вывод), а доступ к базе данных, как правило, блокируется, приведет к потере производительности, если транзакция связана/вызывается методом IO, поэтому Netty будет передавать JBoss настойчивость. Это всего лишь страх перед моим, и мне пока нечего доказывать – MenelaoEE

Смежные вопросы