因此,我们需要在启动服务器时为wildfly中的JMS子系统配置(将jms扩展/子系统/配置添加到standalone.xml),如果它尚未配置且需要自动发生。我们有一个用java编写的应用程序,我们选择使用wildfly的cli java api配置jms子系统,并在我们的应用程序开始部署时执行。问题是我们需要配置jms子系统并在同一个应用程序中使用它。
问题是,当我们使用wildfly的cli java api在standalone.xml中添加所需的配置时,服务器需要重新加载但我们无法重新加载它因为我们的应用程序已经部署,它会尝试使用已定义的队列并失败因为......好吧,子系统还没有激活。在下一次服务器重启时,一切正常,但正如您在生产环境中猜测的那样,这是不可接受的。这有什么解决方案吗?我已经尝试在创建jms子系统的批处理结束时添加reload cli命令,它开始重新加载服务器但是部署没有停止,异常开始左右飞行。
在应用程序部署时,从应用程序重新加载服务器的整个想法对我来说似乎有点不对。
提前致谢。
解决方案: 那么最终的解决方案很简单,我们只需要在批处理操作中添加一个重新加载步骤来添加jms子系统。问题是我们有一组异步操作,所有在应用程序部署时都会启动,因此我必须确保它们都没有启动,直到我可以检查消息传递子系统并在必要时重新加载wildfly。这样我就不会强行打断任何异步任务。
答案 0 :(得分:0)
在启动服务器时,您需要选择适当的配置文件,即完整或全ha。如果这样做,则不需要添加JMS子系统。
如果您只想使用您的方法,请添加队列的依赖关系 应用。除非队列绑定到服务器,否则它将不会开始部署。
答案 1 :(得分:0)
我们需要在添加新子系统时执行重新加载操作,如果您不想执行重新加载操作,那么我建议您以“仅管理员”模式启动服务器。当我们以'admin-only'模式启动服务器时,它只打开管理端口(9990/9999)。通过CLI命令重装服务器实例配置消息传递子系统。希望它有所帮助.. !!