2011-12-27 218 views
0

我正在開發使用JPA作爲數據訪問層的基於GWT的應用程序。我的應用程序需要支持三層架構。主要思想是讓帶有靜態內容的HTTP服務器(Apache)(HTML/javascript等),Web應用服務器(Glassfish)帶有業務邏輯(servlets,beans等)和數據庫服務器(PostgreSQL)GWT三層體系結構

有沒有簡單的方法來劃分爲簡單的GWT應用程序生成的戰爭文件的內容來實現所描述的體系結構?

也許有一個maven插件可以幫助創建靜態內容和業務邏輯的單獨戰爭文件。

我還在考慮創建代理,它將攔截GWT-RPC調用並在遠程服務器上調用業務方法。

我發現非常有趣的文章描述這樣的解決方案(full article),但它需要很多工作來實現我的目標。希望有一個簡化代理生成過程的庫或工具包。

任何想法將不勝感激。

回答

0

我有一個類似的設置,只是Tomcat而不是Glassfish,而且maven構建了一切。這是它的工作原理。 Apache httpd和Tomcat與mod_jk連接。 Apache將所有的請求轉發給Tomcat,除了GWT模塊目錄(讓我們稱之爲gwt_module),其中包含所有GWT編譯的東西 - 由Apache提供服務並配置爲緩存。 其餘的servlet基本上被轉發給Tomcat(RPC,RequestFactory,其他servlet)。 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負載均衡爲主。

+0

這是一個很酷的想法;我從來沒有考慮過使用Apache HTTPD來管理GlassFish。我將根據當前的GlassFish配置測試mod_jk,希望一切順利如您所述。感謝您的快速響應和幫助。 – lhanusiak 2011-12-28 06:48:46

+0

我不確定使用apache提供靜態文件比僅使用tomcat提供服務更快,我主要使用apache進行負載平衡。 – milan 2011-12-28 10:15:09