GWT как часть не веб-приложения - PullRequest
4 голосов
/ 21 декабря 2011

У нас есть приложение на Java-сервере, которое выполняет определенные пакетные задания.Его основная функция не как веб-приложение, и нет никаких причин для этого.Но мы хотели бы добавить опцию, чтобы проверить, что приложение делает с веб-страницы.И мы подумали, что это можно сделать с помощью Google Web Toolkit.

В любом предыдущем опыте работы с GWT мы развернули его на Tomcat.Но в этом случае это кажется излишним.Веб-часть - это скорее побочная функция к тому, что на самом деле делает приложение.

Я думаю о решении, где веб-сервер интегрирован в JAR-файл - возможно, Jetty?Таким образом, полное java-приложение может быть развернуто в одном jar-файле вместе с частью web / GWT.

В этом могут быть аспекты производительности, но у веб-пользователей будет очень мало пользователей.Есть ли какие-либо другие причины не делать это таким образом?

И, можете ли вы дать несколько советов о том, как настроить Eclipse / Ant / Jetty / GWT для этого?

1 Ответ

1 голос
/ 21 декабря 2011

у нас был похожий опыт в нашем предыдущем проекте.Существовало приложение eclipse-rcp со встроенным сервером Jetty (оно запускалось программно при запуске приложения).Приложение GWT было развернуто в Jetty как обычно.Также появился OSGI-сервис в качестве контроллера для обеспечения связи между GWT-сервером и другими частями приложения.Сервер GWT был обычным сервером RCP, который описан в большинстве примеров.У него была ссылка на контроллер.Более того, это был прослушиватель событий для поддержки связи на стороне бота.

Основной проблемой для нас, я думаю, была проблема синхронизации.Поскольку между приложением eclipse-rcp и GWT-частью было много сообщений (каждые, скажем, 100 мс получалось сообщение) и GWT имел асинхронный способ связи между клиентской частью и ее серверной частью, то пришлось создать какой-то механизм.синхронизировать эти сообщения.В противном случае не было проблем с производительностью (кроме IE 6., который должен был поддерживаться: S: D).

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

Upd: Насколько я помню, контроллер был зарегистрирован как сервис OSGI только для возможности связи с другими сервисами части Eclipse-RCP.Для связи с контроллером GWT был реализован специальный интерфейс, который был известен GWT-серверу (контроллер был зарегистрирован как средство реализации через экземпляр, а сервер был повторно зарегистрирован в контроллере как IMessageListener).Этот интерфейс лежал в отдельном проекте, который также мог быть встроен в файл .war.Этот проект также содержал номер события для поддержки обратной связи между контроллером и GWT-сервером через интерфейс IMessageListener.

Возможно, это немного запутанно, извините.Может быть, я должен нарисовать диаграмму ..

...