Как установить порядок развертывания / зависимости для WAR-файлов и -jms.xml ActiveMQ дескрипторов
Я провел последнюю неделю, пытаясь выяснить, как это сделать в JBoss EAP 7 (на самом деле, даже в JBoss AS 7 я не был уверен, как это сделать).
Я читал, что в EAP 'jboss-all.xml' может использоваться для установления порядка WAR в EAR, но в приложении, с которым я имею дело, мы не используем файлы EAR; вместо этого у нас есть набор из 12 WAR, которые развертываются в автономном режиме / развертываниях. Мы также используем 4 разных дескриптора развертывания -jms.xml для создания различных очередей / тем JMS. Кроме того, даже используя этот метод, если зависимости еще не развернуты, зависимая WAR просто потерпит неудачу. Я не хочу этого - я бы хотел установить порядок развертывания в JBoss EAP 7.
Проблема заключается в том, что при запуске некоторые из WAR зависят от очередей / тем JMS, определенных в дескрипторах развертывания -jms.xml, но они неизбежно начинают генерировать страницы сообщений журнала WARN/ERROR, поскольку эти очереди / темы являются еще не создан. В конечном счете, вещи (в большинстве случаев) разворачиваются нормально. Однако моя команда считает, что должен быть какой-то способ установить порядок развертывания среди WAR (и, возможно, дескрипторов -jms.xml). Я попытался перенести содержимое этих файлов -jms.xml в подсистему "обмена сообщениями" в standalone.xml, но это вызывает другой набор проблем (а именно, при закрытии JBoss сначала удаляются темы / очереди, что приводит к равное количество спама в журнале WARN/ERROR от тех WAR, зависящих от тех очередей / тем, которые еще не закрыты).
Короче, я ищу способ:
- определите порядок развертывания среди дескрипторов развертывания WAR и -jms.xml в автономном /deployments, чтобы файлы -jms.xml обрабатывались ПЕРЕД развертыванием WAR (поскольку WAR зависят от очередей / тем, определенных в -jms XML-файлы)
- в этом порядке убедитесь, что при отключении JBoss WAR-файлы отменяются до уничтожения очередей / тем (определенных в -jms.xml).
Ниже приведена трассировка стека сообщений WARN/ERROR, сгенерированных из одной из WAR, которые зависят от тем / очередей, которые должен создавать -jms.xml, но, поскольку все запускается сразу, когда я запускаю standalone.bat, они еще не существует, поэтому этот журнал спам генерируется:
20:35:30,853 ERROR [org.jboss.as.controller.management-operation] (Queue StatsCollector) WFLYCTL0013: Operation ("read-attribute") failed - address: ([
("deployment" => "pipe-topics-jms.xml"),
("subsystem" => "messaging-activemq"),
("server" => "default"),
("jms-topic" => "com.leidos.mb.spi.event.NotificationBus")
]) - failure description: "WFLYCTL0216: Management resource '[(\"deployment\" => \"pipe-topics-jms.xml\")]' not found"
20:35:30,854 WARN [com.leidos.mb.pipe.QueueController] (Queue StatsCollector) Error retrieving attribute:messagesAdded from:jboss.as.expr:deployment=pipe-topics-jms.xml,subsystem=messaging-activemq,server=default,jms-topic=com.leidos.mb.spi.event.NotificationBus: javax.management.AttributeNotFoundException: "WFLYCTL0216: Management resource '[(\"deployment\" => \"pipe-topics-jms.xml\")]' not found"
at org.jboss.as.jmx.model.ModelControllerMBeanHelper.getAttribute(ModelControllerMBeanHelper.java:309)
at org.jboss.as.jmx.model.ModelControllerMBeanHelper.getAttribute(ModelControllerMBeanHelper.java:267)
at org.jboss.as.jmx.model.ModelControllerMBeanServerPlugin.getAttribute(ModelControllerMBeanServerPlugin.java:133)
at org.jboss.as.jmx.PluggableMBeanServerImpl.getAttribute(PluggableMBeanServerImpl.java:388)
at com.leidos.mb.pipe.QueueController$QueueInfo.getIntValue(QueueController.java:941) [classes:]
at com.leidos.mb.pipe.QueueController$QueueInfo.getCurrentStats(QueueController.java:978) [classes:]
at com.leidos.mb.pipe.QueueController$StatsCollector.collect(QueueController.java:1042) [classes:]
at com.leidos.mb.pipe.QueueController$StatsCollector.run(QueueController.java:1063) [classes:]