GWT трехуровневая архитектура - PullRequest
0 голосов
/ 27 декабря 2011

Я разрабатываю приложение на основе GWT, используя JPA в качестве уровня доступа к данным.Мое приложение должно поддерживать трехуровневую архитектуру.Основная идея заключается в том, чтобы иметь HTTP-сервер (Apache) со статическим контентом (html / javascript и т. Д.), Сервер веб-приложений (Glassfish) с бизнес-логикой (сервлеты, бины и т. Д.)и Сервер базы данных (PostgreSQL) .

Существует ли какой-либо простой способ разделения содержимого файла войны, сгенерированного для простого приложения GWT, для достижения описанной архитектуры?

Возможно, существует плагин maven, который поможет в создании отдельных военных файлов со статическим контентом и бизнес-логикой.

Я также рассматривал возможность создания прокси, который будет перехватывать вызовы GWT-RPC и вызывать бизнес-методы на удаленном сервере.

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

Любые идеи будут высоко оценены.

1 Ответ

0 голосов
/ 27 декабря 2011

У меня похожая настройка, только Tomcat вместо Glassfish и maven для сборки всего. Вот как это работает. Apache httpd и Tomcat связаны с mod_jk. Apache перенаправляет все запросы в Tomcat, за исключением dir модуля GWT (давайте назовем его gwt_module), который содержит все скомпилированные GWT вещи - которые обслуживаются Apache и настроены для кэширования. Остальные - сервлеты, в основном, перенаправляются в Tomcat (RPC, RequestFactory, другие сервлеты). MongoDB в качестве сервера базы данных.

Вот соответствующий раздел httpd.conf:

JkMount  /* webbalancer
JkUnMount /gwt_module/*  webbalancer
Alias /gwt_module "/srv/web/app_servers/tomcat-1/webapps/ROOT/gwt_module/"

<Directory  "/srv/web/app_servers/tomcat-1/webapps/ROOT/gwt_module/">
    Order deny,allow
    allow from all
    Options -Indexes
    <FilesMatch "\.cache\.*">
        Header set Cache-control max-age=31536000
#       Header unset ETag
#       FileETag None
    </FilesMatch>

# turning off ETags, to force browsers to rely only on Cache-Control and Expires headers.
# for some reason, FF wasn't using the cache for JS files if ETags are on.
  Header unset ETag
  FileETag None
</Directory>

# Tell clients to keep images in the cache
ExpiresActive On
ExpiresByType image/x-icon A2592000
ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpg A2592000
ExpiresByType image/jpeg A2592000
#ExpiresByType application/x-javascript A2592000
ExpiresByType text/css A2592000
ExpiresByType application/xhtml+xml A2592000

# Compress output for text
AddOutputFilterByType DEFLATE text/html text/xml text/css application/x-javascript text/javascript application/javascript

Примечание: я не уверен, что обслуживать статические файлы с помощью Apache быстрее, чем обслуживать все с использованием только tomcat, я использую apache в первую очередь для балансировки нагрузки.

...