2009-06-17 136 views
3

如果我們要將我們的Web服務器和應用程序服務器分開,我們是否需要在兩臺機器上都安裝java?我有一位同事說在兩臺機器上都安裝了jboss(如果兩臺機器都安裝了應用服務器,似乎打敗了目的),另一位說只在一臺機器上安裝jboss,另一臺安裝apache(應用服務器/ Web服務器)。分離Web服務器和應用程序服務器,都需要Java?

我已經安裝了web項目,它使用servlet和JSP。 JSP在servlet執行操作時顯示內容。 servlet接收請求並將響應轉發給JSP。我的問題是我如何做到這一點,如果Web服務器只有Apache,並因此顯示靜態內容?我知道如何將請求從Web服務器轉發到應用服務器,但是如何維護會話狀態,是在Web服務器上完成的,如果是的話,它將如何完成?

如果登錄頁面是html,登錄後的內容是html,那麼如果他們沒有登錄,我怎麼能阻止人們訪問內容?

回答

8

您描述的後一種設置是通過Apache提供靜態內容並將JSP/Servlet請求轉發到應用服務器上的,這是標準設置。

會話狀態保持正常,您的應用程序服務器上的Java web應用程序向用戶發送一個包含JSESSIONID的cookie,並且當用戶發出後續請求時,Apache將轉發給它的所有請求信息(包括cookie)應用服務器。

如果您希望讓Apache坐在前面並向多個JBoss實例請求負載均衡請求,安裝程序會變得更復雜一些,但使用mod_proxy_balancer進行設置仍然非常容易。

一些鏈接,可以幫助你:

http://help.shadocms.com/blog/2009/how-to-setup-apache-with-jboss-on-a-shado-site.cfm http://redlumxn.blogspot.com/2008/01/configure-apache2-and-jboss-422ga.html

0

您的場景讓我想起了SiteMinder。它被用來訪問控制到我們的應用程序。它內置了HTTP轉發功能,因此從用戶的角度來看,瀏覽器會與siteminder和siteminder與真實應用程序交談。他們都使用會話cookie和siteminder的名爲SMSESSION,而應用程序的名爲JSESSIONID,所以沒有衝突。

+0

在兩臺機器上使用jboss(或tomcat),但使用一個作爲Web服務器和一個作爲應用程序服務器會更好嗎?至少我可以在Web服務器上使用JSP,並仍然使用應用程序服務器來處理請求。 – ravun 2009-06-17 13:10:02

2

有很多可能性。

  1. 在web機器上安裝apache mod_jk將請求重定向到tomcat/jboss。 在這種情況下,你不需要這臺機器上的Java。

  2. 你也可以分開你的jsp容器(例如tomcat/jboss)和你的應用程序服務器,在這種情況下你需要安裝Java你有你的web容器的地方。

  3. 一般來說,如果需要更高的安全性,人們會將上述可能性結合起來。薄網層(APACHE +沒有java)+ Web容器(例如Tomcat)的+應用層(的JBoss/glassfish的)

第一個解決方案是通常的標準之一。

0

常見的部署是使用Apache前端服務器爲靜態內容提供動態內容並將請求轉發到JSP服務器。這主要是出於性能原因,Apache在提供內容和減少JSP服務器上的負載方面速度更快。

我看不出任何原因,例如,使用IIS作爲前端服務器(從等式中刪除Java),儘管使用財富Apache模塊和相關的配置信息,我想您可能會如果你這樣做,你會爲自己生活困難。

0

簡短的回答 - 號

朗的答案 -

這取決於你的應用程序的需要。有幾個原因,你會希望有一個不同的物理機器上的Web服務器:

  • 你想擁有Web服務器服務 靜態內容,並離開應用程序 服務器自由只處理 servlet/jsp content

  • 您希望實現基於 負載均衡的軟件。您將有
    Apache服務器請求代理到
    多個後備應用服務器

在登錄例如,HTML頁面被Apache服務,以及HTML表單點的行動,你的servlet處理 - 所以JBoss/java仍然會管理會話。請記住,您希望apache到服務器的任何靜態內容都需要存在於Web服務器上。

相關問題