2012-06-25 142 views
0

我正在使用Vaadin框架在java中開發一個web應用程序。apache tomcat上的Java web應用程序

我在Apache Tomcat上運行該應用程序。我想問的是,如果我在Apache Tomcat上運行該應用程序,並在兩臺不同的計算機上使用兩個不同的瀏覽器訪問相同的應用程序,那麼應用程序在Tomcat上是否有兩個實例,還是隻有一個實例?我已經搜索過它,但沒能找到滿意的答案。

謝謝!

+3

我不會做Vaadin,但是因爲它幾乎是構建在Servlet API之上的所有其他第三方Java EE Web MVC框架,所以此答案可能是您要找的內容:http://stackoverflow.com/questions/3106452/how-do-servlets-work-instantiation-session-variables-and-multithreading/3106909#3106909 – BalusC

回答

1

Tomcat的一個實例,以及您的Vaadin應用程序的許多實例。

要訪問您的Vaadin應用程序,用戶將其網頁瀏覽器指向您的Vaadin應用程序的URL。 Tomcat必須已經運行,才能接受來自Web瀏覽器的請求。當已經運行的Tomcat實例接收到該請求時,Tomcat將啓動一個新線程。在該線程中,將創建並運行Vaadin「Application」類的子類的新實例。

因此,如果您有5個同時運行Vaadin應用程序的用戶,則會運行一個Tomcat實例。 Tomcat實例將運行5個會話,每個會話都在自己的線程中運行自己的Vaadin「Application」子類的實例。

在您的應用中標記爲「靜態」的任何內容適用於您應用的所有5個實例,而未標記爲「靜態」的內容僅適用於您的應用的單個實例(單個用戶)。

+0

非常感謝您的詳細解答。現在我的含糊不清了。再次感謝。 –

+0

提示「靜態」參考,這是完全正確的。 – Waylander

3

如果您在Tomcat中運行Web應用程序,您將只有一個Tomcat實例,它將託管您的應用程序。這個單一的Tomcat實例(以及您的Web應用程序)將能夠處理來自許多不同計算機的許多不同的瀏覽器請求。這正是Web服務器設計的目的:處理來自許多不同客戶端的請求。

+0

這就是我正在尋找的答案。非常感謝。 –

相關問題