如果您想在 Glassfish 服务器上托管多个相当独立的应用程序,您是否需要单独的域?尤其:
- 同一域中的应用程序可以以某种方式相互干扰吗?
- 同一域中的不同应用程序可以侦听不同的 IP 地址/端口吗?
如果是这样,您何时/为什么实际使用单独的域?
如果您想在 Glassfish 服务器上托管多个相当独立的应用程序,您是否需要单独的域?尤其:
如果是这样,您何时/为什么实际使用单独的域?
从逻辑上看,单独的域或单个域中多个应用程序共存是相似的(可以配置 HTTP 端口等)。
主要区别在于,在一种情况下,您有一个 JVM 运行所有应用程序,而在另一种情况下,您有多个 JVM。这可以产生很大的不同。在我们的一个客户站点上,我们最初将所有内容部署在一个域/JMV 中,但最终决定将部署拆分为多个域/JVM,因为它可以提供更好的性能,尤其是垃圾收集时间。所以是的,应用程序可能会以非常间接的方式进行干扰。
此外,Java EE 应用程序无法真正关闭或启动,因此域是您可以打开和关闭电源的最小单位。在某些情况下,它很方便。
最后,有些东西是每个域的,比如应用程序。服务器日志级别,计时器持久性等。如果您想要两个具有不同设置的应用程序,您将需要两个域。
考虑这种情况:您的域中部署了 2 个应用程序:轻量级前端应用程序和后端处理应用程序(例如每小时按计划任务运行并处理大量数据)。在这种情况下,您可能会遇到后端应用程序占用 VM 的所有资源的问题,从而导致前端应用程序在极端情况下无响应,或者更糟糕的是,杀死 jvm(例如内存不足错误或 perm gen 空间错误)。
如果你把它分成两个域,即使你的后端东西刹车,其他应用程序也是安全的,因为它有自己的虚拟机和内存可以玩。