【问题标题】:What is the difference between Restarting JBoss server and redeploying it重新启动 JBoss 服务器和重新部署它有什么区别
【发布时间】:2013-08-23 05:52:43
【问题描述】:

我注意到在运行 Jboss 时这两个选项都可用,并且它们都重新编译了项目(我注意到两个选项都在运行“make”)。我确实看到了this question,接受的答案是有道理的,但我不确定热插拔是什么意思。可以在无需重新启动服务器的情况下注册更改的可能示例是什么?

【问题讨论】:

  • 你是什么意思“他们都重新编译项目:。你是在使用 Maven/Ant 来管理 JBoss?或者也许是 Eclipse/NetBeans/...?
  • 我用的是 Maven,忘了说。

标签: jboss7.x application-server


【解决方案1】:

您的问题需要更多细节才能完整回答,但这里有一些基本概念:

  • 热插拔只是将项目的文件替换到应用程序服务器的部署文件夹中(未打包,即不是 .war/.ear,而是所有单独的文件)。它通常更快,因为更改在 Web 应用程序中立即可见。但应用程序服务器并不总是可能/支持它,而且如果您热交换 .jar 文件,应用程序服务器通常不会选择它或最终会感到困惑。
  • 重新启动 JBoss 将停止所有现有服务(EJB、池、队列、消息传递...)并重新启动它们。这几乎是运行应用程序最简洁的方式(最简洁的方式是取消部署、重新启动和部署)
  • 重新部署意味着您的应用程序及其服务首先从 JBoss 中删除,但服务器级别的其他服务设置(消息传递、池、JMX ......取决于您的实际设置)仍然部署。然后部署应用程序(从您的 dev 文件夹或 .WAR/.EAR 复制到 JBoss webapp)

通常,您会安全地热交换(最终手动).(x)html/.jsp/.jsf/images/.js/.css,因为 JBoss 不需要处理它们。 更改在 WEB-INF/classes 中部署为 .class 的 java 类中的代码通常可以热交换。

在部署为 .jar 的 java 文件中更改代码几乎总是至少需要重新部署。一些正确配置的启用 OSGi 的应用程序服务器在热交换完整的应用程序时更加灵活(我知道 Glassfish 可以,但我不知道需要什么具体设置)

最后,在开发中,有时多次重新部署会导致内存泄漏或应用服务器不稳定(通常您会在日志中得到 OutOfMemory 异常)然后您需要清理(取消部署、停止、启动然后部署)

【讨论】:

  • 我明白了,所以这是JBoss支持它的问题,以及文件格式。感谢您的回答。
  • 在 JBoss EAP 7/WildFly 10 中,OutOfMemory 异常似乎已经消失或者变得更好了——因为这很烦人!
猜你喜欢
  • 2012-12-05
  • 2010-12-10
  • 1970-01-01
  • 1970-01-01
  • 2017-09-21
  • 1970-01-01
  • 2011-04-21
相关资源
最近更新 更多