如果我有一個Servlet類,並且這個類在兩個應用程序中使用 - 是否在這兩個應用程序之間共享靜態成員? 這是由Java EE或容器特定的行爲嗎?靜態成員是否在Java EE兼容的servlet容器中的應用程序之間共享?
4
A
回答
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類,如果部署在兩個不同的應用程序,將無法訪問其他應用程序的其他類。
相關問題
- 1. 在2個Java EE應用程序之間共享數據
- 2. Java EE 5,6和7兼容的應用程序服務器是否與J2EE兼容?
- 3. 非Java EE 5 servlet和Java EE 5 servlet容器之間有什麼區別?
- 4. 在相同的Java EE容器中,WAR庫是否可見和/或跨Web應用程序共享?
- 5. 在Java EE應用程序中分離靜態和動態內容
- 6. Kubernetes在部署中的容器之間共享容量
- 7. 在weblogic中引用EAR應用程序的共享Java EE庫
- 8. 線程池是否在應用程序域之間共享?
- 9. 不同瀏覽器之間的應用程序兼容
- 10. 在動態加載之前檢查共享庫的兼容性
- 11. 模板實例之間共享靜態成員? (不可能?)
- 12. 如何在servlet之間共享java AsyncContext?
- 13. 是否在C++庫的中間二進制兼容性中添加新的靜態成員?
- 14. 在MVC應用程序中的控制器之間共享Unity容器的最佳方式是什麼?
- 15. App Engine - 是否在應用程序版本之間共享memcache?
- 16. 如何在擴展和容器應用程序之間共享SQLite數據庫
- 17. 在servlet和webservice之間共享一個靜態對象
- 18. Java的靜態成員和C++的靜態成員之間的區別
- 19. SE EE Netbeans兼容性
- 20. 在應用程序之間共享drawables
- 21. 應用程序之間共享在C#
- 22. 如何在其容器中調試Java EE應用程序?
- 23. 在iOs 10和WatchOS 3(共享容器)之間共享數據
- 24. JAVA EE 6共享有狀態EJB之間的實例
- 25. 是否在AppDomain之間共享靜態類?
- 26. 在Java EE網絡應用程序中共享隊列?
- 27. Liferay 7.0 EE是否與Weblogic 10.3.6兼容?
- 28. 類之間的共享偏好(靜態)?
- 29. 靜態index.html文件 - servlet容器是否被首先命中?
- 30. 公共靜態類中的非靜態成員是否線程安全?
Vineet,這太棒了。謝謝! – Zeemee
@Mulmoth,不客氣。 –