![](/img/trans.png)
[英]Java EE - JVM of an application server with many web applications
[英]Why Single JVM instance in Java EE Application server?
我想問一下,如果我們使用java命令運行獨立的Java應用程序,則為每個應用程序創建一個帶有單獨堆等的JVM新實例。
假設您已經啟動了像oracle或jboss這樣的應用程序服務器,它需要一個jvm實例,因為您已將jvm調整屬性配置到bin文件夾* .bat或* .sh文件中,並且具有最小和最大堆大小以及所有jvm調整屬性僅在應用程序服務器上。 當您部署多個war文件時,該文件部署在應用程序服務器上方,它將從服務器獲取java屬性。
但是,當您使用獨立應用程序時,在這種情況下,每個應用程序都在其自己的jvm屬性中進行了配置。
關於類加載器-它在理論上將服務器與應用程序(EAR / WAR)隔離,並使每個應用程序彼此隔離。 例如,假設服務器使用Spring 3.x,而應用程序1使用Spring4.x。 通過隔離,服務器只能看到3.x,而應用程序1只能看到4.x。
但是,如果應用程序1在其EAR / WAR中不包含Spring 4.x jar,會發生什么? 父類加載器(服務器)嘗試加載Spring,當然應該是3.x。 然后,任何依賴關系也將從服務器上下文中加載。 這實際上似乎在功能上很有效(嚇人),但您更有可能遇到MethodNotFound和ClassNotFound異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.