Есть ли гораздо более простой подход для достижения этих целей с использованием сервера приложений, такого как GlassFish?
Это точная точка сервера приложений (которая отличается от веб-сервера).сервер) в 3-х уровневой настройке.Конечно, вы можете опрашивать и / или использовать обмен сообщениями для предоставления дополнительных перехватов для обмена метаданными (например, событие изменения базы данных), но в итоге вы плохо переизобретаете очень хорошо известное (и нетривиальное) колесо (например, синхронизацию данных в распределенном распределении).уровень).
Если вы можете жить без кэширования результатов запроса на клиенте и допустимы задержки доступа к серверу (2-й уровень) для доступа к данным, то ясно, что это путь.
[ниже довольно поздний ps, но случайно прочитал этот вопрос и вопрос сегодня и лично почувствовал, что это требует разъяснения.]
Java EE - это распределенная архитектура на основе контейнеров / компонентов для уровня предприятия.Оставляя в стороне неспособность рынка компонентов появиться для J2EE (хотя некоторые пытались это сделать), остается факт его COA и его неотъемлемая поддержка распространения как фундаментальная проблема архитектуры.Обратите внимание, что веб-профиль (например, «веб-сервер») Java EE также является частью той же архитектуры.
Итак, что вы получаете, когда используете один из этих серверов приложений Java EE и как он будет работатьВаше требование / проблемы дизайна.
Двумя важными ключевыми аспектами поддержки распространения, предлагаемой Java EE, являются ее (а) распределенное пространство имен (JNDI) и (б) его меню предложений для подключения по уровням (чистый RMI (где выразверните свою собственную распределенную систему на основе RPC), EJB-компоненты Enterprise Beans (удаленно и локально предоставляемые интерфейсы компонентов с четко определенной семантикой с точки зрения поиска и жизненного цикла в распространяемых контейнерах). Из разновидностей EJB, с точки зрения семантики соединения, вы имеетеобмен сообщениями (JMS) и прямой RPC.
В вашем случае вы можете, например, выбрать шину сообщений JMS как с конечными точками JMS толстого клиента, так и с EJB-компонентами MessageDrivenBean.домен обмена сообщениями как с темой / подпиской, так и с очередями прямого доступа. Они могут быть декларативно настроены как долговечные, или нет, и т. д.
Ваш сервер приложений c / предоставит этого JMS-провайдера, или вы можете выбратьлучший в своем роде, например, TIBCO, для ваших нужд, в соответствии с вашими требованиями.
Вы не изобретаете любой из вышеперечисленных весьма нетривиальных задач.В центре внимания остаются требования к вашему домену, и у вас есть все инструменты, необходимые для создания в рамках определенных разумных соглашений об уровне обслуживания вашей платформы.
Жизнеспособной альтернативой этому является составление того, что сводится к одной и той же вещи за вычетомПодход COA к Java EE (который дает вам декларативное волшебство и церемонию разработки pita) с автономным программным обеспечением OSS, например, ØMQ для вашей шины, удаленный RPC REST и, возможно, REDIS для повышения гарантий сохранности ваших сообщений и для координации (без JNDI..) ваши распределенные шары в воздухе.
Я лично предпочитаю это последнее, учитывая, что для меня это будет веселее .Кроме того, эффективность, полученная благодаря более прямому контролю над уровнем распределения, позволяет получить преимущества масштабируемости при очень жестких требованиях (например, незначительное меньшинство требований).
Проект распределенной системы для предприятия («поставлен под задачу»)) необходимо учитывать бизнес-требования, выходящие за рамки предметной области.Это часть уравнения.
Надеюсь, что это полезно (и своевременно;)