Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java应用服务器和JVM_Java_Jakarta Ee_Jvm - Fatal编程技术网

Java应用服务器和JVM

Java应用服务器和JVM,java,jakarta-ee,jvm,Java,Jakarta Ee,Jvm,当您将许多应用程序部署到java应用程序服务器时,这些应用程序是否都在同一个JVM(即应用程序服务器启动时启动的JVM)中运行 您是否可以选择在单独的JVM中运行这些应用程序?如果是,为什么要这样做?java应用程序服务器在单个JVM中运行,因此在java应用程序服务器实例下部署的每个应用程序都与其他应用程序在同一个VM中运行,而如果应用程序服务器未群集,则每个应用程序都有不同的类加载器 否则,它可以在不同的主机和jvm上工作 浏览以下问题的答案。希望所有问题都能得到回答: 恐怕您不能在不同的J

当您将许多应用程序部署到java应用程序服务器时,这些应用程序是否都在同一个JVM(即应用程序服务器启动时启动的JVM)中运行


您是否可以选择在单独的JVM中运行这些应用程序?如果是,为什么要这样做?

java应用程序服务器在单个JVM中运行,因此在java应用程序服务器实例下部署的每个应用程序都与其他应用程序在同一个VM中运行,而如果应用程序服务器未群集,则每个应用程序都有不同的类加载器


否则,它可以在不同的主机和jvm上工作

浏览以下问题的答案。希望所有问题都能得到回答:


恐怕您不能在不同的JVM中运行,因为appserver必须管理对象的生命周期。这就是吉的全部。此外,这也是JEE声明不应在应用程序中使用线程的原因,因为您希望容器为您处理并发性


当然,在集群环境中,您可以有多个JVM,但对于AppServer+容器仍然是相同的

谢谢你的回复。那么,使用不同的类装入器会导致问题吗?如果app1使用app2使用的类,该怎么办。app1加载此类后,app2是否会尝试加载此类?Tomcat是否知道已经加载了,并且不再尝试加载它?每个应用程序都有自己的共享内存上下文,由同一个应用程序访问,因此app2不知道app1中加载的类,也没有访问它的权限。只是有点困惑。你是说Tomcat管理一个共享内存上下文,每个应用程序都有自己的私有区域,这样就不会发生类加载冲突了?我以前听说过类加载问题,但不确定它们是如何发生的。谢谢你的帮助。但是,每个应用程序都在appserver的同一个JVM中运行,对吗?因为appserver管理webapp的某些对象生命周期。这也是为什么JEE声明你不能在你的webapp中使用线程,因为它可能会破坏JEE合同。不一定……你可以不对称地部署应用程序……每个节点1个应用程序……这种机制用于运行批处理的jee5应用程序……jee7管理批处理。我想了解更多信息:-)[每天学习一件新事物]JEE7支持JSR352,即在应用服务器中进行批处理;JEE6支持在单个节点上工作的Java Singleton EJB,并且能够在节点出现故障时进行迁移();JEE5不支持(Weblogic支持EJB单例服务),我们需要一个技巧来集成在节点上以单例方式工作的EJB应用程序。JSR352听起来像是JMS的演变