0

因此,如果尚未配置并且需要自动发生,我们需要在启动服务器时在 wildfly 中配置(将 jms 扩展/子系统/配置添加到standalone.xml)中的 JMS 子系统。我们有一个用 java 编写的应用程序,我们选择使用 wildfly 的 cli java api 配置 jms 子系统,并在我们的应用程序开始部署时执行。问题是我们需要配置 jms 子系统并在同一个应用程序中使用它。

问题是,当我们使用wildfly的cli java api在standalone.xml中添加所需的配置时,服务器需要重新加载但我们无法重新加载它,因为我们的应用程序已经在部署,它尝试使用定义的队列并失败,因为.. . 嗯,子系统还没有激活。在下一次服务器重新启动时,一切正常,但正如您在生产环境中所猜测的那样,这是不可接受的。有什么解决办法吗?我尝试在创建 jms 子系统的批处理末尾添加一个 reload cli 命令,它开始重新加载服务器,但部署并没有停止,异常开始左右飞行。

此外,在应用程序部署时从应用程序重新加载服务器的整个想法对我来说似乎有点错误。

提前致谢。

解决方案:最终的解决方案很简单,我们只需要在添加 jms 子系统的批处理操作中添加一个重新加载步骤。问题是我们有一组异步操作,这些操作在部署应用程序时全部触发,所以我只需要确保它们都没有启动,直到我可以检查消息传递子系统并在必要时重新加载 Wildfly。这样我就不会强行中断任何异步任务。

4

2 回答 2

0

添加新子系统时需要执行重新加载操作,如果您不想执行重新加载操作,那么我建议您以“仅限管理员”模式启动服务器。当我们以“仅限管理员”模式启动服务器时,它只打开管理端口(9990/9999)。通过 CLI 命令重新加载服务器实例配置消息传递子系统。希望能帮助到你..!!

于 2017-05-15T14:05:53.713 回答
0

您只需要在启动服务器时选择适当的配置文件,即 full 或 full-ha。如果您这样做,则不需要添加 JMS 子系统。

如果您只想使用您的方法,请在应用程序中添加队列依赖项。除非队列绑定到服务器,否则它不会开始部署。

于 2017-05-14T18:02:44.293 回答