gpt4 book ai didi

java - JBoss 中的 Web 应用程序、servlet 上下文和 JVM 之间的关系是什么?

转载 作者:行者123 更新时间:2023-12-02 06:03:14 26 4
gpt4 key购买 nike

特别是,我想知道与特定 Web 应用程序关联的(?)servlet 上下文是否可以在同一 JVM 中初始化、销毁和再次初始化。

最佳答案

JVM 只是运行所有 java 代码的虚拟机,JBoss 是运行 java 代码的一个示例(JBoss 不是 JVM)。

接下来,JBoss 应用程序服务器构建在该虚拟机的基础上,并在内部创建提供 JEE 规范服务(Servlet 是其中一部分)所需的“容器环境”。

JEE 应用程序可以由多种不同的可部署工件组成,包括 Enterprise Java Bean(无状态和有状态 session Bean、消息驱动 Bean)、Web 应用程序 (WAR) 和企业应用程序 (EAR,它是 EJB 等其他工件的组合) war )。

Servlet 是 Web 应用程序的一个组件。 Servlet 本身并不是一个可部署的工件。

Web 应用程序可以部署、启动、停止、取消部署和重新部署到正在运行的 JEE 容器(例如 JBoss)中。启用此功能并确保其能够合理安全地完成是容器责任的一部分。容器还有责任帮助将不同的可部署工件彼此隔离(通常通过类加载器恶作剧)。

因此,从这个意义上说,包含 Servlet 的 WAR 可以安全地部署、执行、停止、取消部署,然后再次部署到正在运行的容器中。单个 Servlet 不能,只能将 WAR 作为一个整体。

但是,由于 JVM 的实际情况,事实是组件之间只能如此隔离,有些事情可能会导致组件留下痕迹,即使组件已从正在运行的服务器中删除,以及其他问题。

作为一般规则,它基本上可以工作,工作良好且可靠,但是不同的容器以不同的方式做事,并且行为不当的组件可能会对实时 JVM 造成严重破坏(无论是设计的还是无意的)。

应用程序越简单,就越有可能运行良好。开始使用线程、堆外内存、未与应用程序捆绑的 jar 等玩游戏,这些可能会导致麻烦。

关于java - JBoss 中的 Web 应用程序、servlet 上下文和 JVM 之间的关系是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22510937/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com