2011-07-18 52 views

回答

7

如果我有一個Servlet類,並且這個類在兩個應用程序中使用 - 是在這兩個應用程序之間共享的靜態成員嗎​​?

不,不會在應用程序間共享靜態成員。通常,每個應用程序將與其自己的類加載器相關聯,因此,Servlet類將在容器中加載兩次。通過推論,靜態成員不會在應用程序之間共享。

如果您需要跨應用程序共享數據,建議根據您的需要使用文件,JMS隊列或數據庫。

此行爲是由Java EE或容器特定的?

Java EE 6 Platform規範沒有定義類加載行爲。該規範規定在這方面,以下幾點:

EE.8.3類裝載要求

Java EE規範故意沒有定義的確切類型 和類加載器的安排,必須由使用Java EE 產品。相反,該規範根據 定義了要求哪些類必須或不能對組件可見。

組件可見的類和資源不包含其他Web模塊在其他應用程序中的類。他們可能包括類和資源在同一應用程序的其他Web模塊:

EE.8.3.1 Web容器類裝載要求

...

組件在網絡容器可能有權訪問以下 類和資源。便攜式應用程序不能依賴於有 或不能訪問這些類或資源。

•如上所述,包含在同一個耳朵 文件中的任何其他Web模塊均可訪問的類和資源。

...

由此推斷,Servlet類,如果部署在兩個不同的應用程序,將無法訪問其他應用程序的其他類。

+0

Vineet,這太棒了。謝謝! – Zeemee

+0

@Mulmoth,不客氣。 –

相關問題