Как развернуть активацию адаптера ресурсов в JBoss 7?

Я пытаюсь выяснить, как развернуть активацию адаптера ресурсов в JBoss 7. По сути, я хочу иметь возможность упаковать и развернуть полное приложение без изменения конфигурации базового сервера, отчасти потому, что я хочу запустить тестирование с помощью Arquillian, но и потому, что я хочу иметь возможность развертывать свои пакеты в средах, где у меня может не быть возможности изменить конфигурацию базового сервера.

Вот где я сейчас. Я создал EAR, который содержит rar active-mq (который также настроен в application.xml). Это ухо само по себе отлично строится и развертывается с помощью плагина maven ear и jboss-as-maven-plugin.

Однако, чтобы активировать rar, единственный способ, который я смог выяснить, — это взломать сам файл rar и добавить ironjacamar.xml в META-INF rar. сильный> каталог. Но для этого мне пришлось взломать rar в моем репозитории maven, чего я действительно не хочу делать.

Я попытался заставить maven добавить ironjacamar.xml на этапе упаковки моего maven pom, но это тоже немного взломано, и я все равно не смог заставить его работать. (Примечание для себя: проверьте наложения развертывания)

Я также подумал о написании сценария добавления фабрики соединений с использованием jboss-cli, но в документации четко указано, что это для создания фабрик для встроенного сервера hornet-mq, ​​который не является моей целью, и замены реализация JMS по умолчанию на сервере требует серьезных изменений в конфигурации сервера.

Я просмотрел все проекты быстрого старта и заметил, что все виды конструкций развертываются с помощью файлов -jms.xml и -ds.xml, включенных в пакет, но они также специфичные для Hornet-mq и JDBC соответственно. (Я надеялся, что деплойер может поддерживать -rar.xml или что-то подобное).

Единственный другой способ, который я могу придумать, и я не знаю, поддерживается ли он, — это определить развертывание подсистемы в моем пакете. Что-то подобное существует ?

===== ОБНОВЛЕНИЕ =====

Я попытался добавить обновление наложения cli (как я бы использовал maven jboss в качестве плагина), но это не дало никакого эффекта.

deployment-overlay add --name=rarActivation  --content=META-INF/ironjacamar.xml=\..\container\src\main\resources\ironjacamar.xml --deployments=activemq-rar.rar --redeploy-affected

person Nicholas    schedule 26.09.2013    source источник


Ответы (1)


Ну, в отсутствие каких-либо других ответов, это решение, которое я придумал. Это немного хак, но он безупречно работает с Active MQ и WebSphere MQ. Предпосылка заключается в том, что я развертываю 2 разных RAR для каждой системы JMS, к которой я хочу подключиться. Один из них — нетронутый файл xxx.rar, который я извлек из репозитория Maven. Второй — это мой «конфигурационный RAR», который содержит копию ra.xml из исходного rar, а затем файл конфигурации ironjacamar.xml. Оба они находятся в папке META-INF файла config.

Для каждого поставщика RAR файл ironjacamar.xml может быть сгенерирован с помощью rar-info.sh, который включен в загрузку Iron Jacamar 1.1. Процедура описана в разделе под названием 10.1. Инструмент информации об адаптере ресурсов в руководстве пользователя< /а>.

На примере ActiveMQ 5.8.0:

Сгенерированный файл ironjacamar.xml извлекается из полного вывода файла rar-info.sh. В файле он называется:

Deployment Descriptor:
----------------------

Извлеченная часть файла, которая станет ironjacamar.xml, начинается после этого заголовка и заканчивается ‹/resource-adapters>.

Должны быть применены следующие правки:

  1. Удалите открывающие теги <resource-adapters> и <resource-adapter> и замените открывающим тегом <ironjacamar.xml>.
  2. Удалите открывающий тег <archive>.
  3. Удалите закрывающие теги </resource-adapter> и </resource-adapters> и замените закрывающим тегом </ironjacamar.xml>.

Существуют образцы определений фабрик соединений для каждого типа соединения (соединение, очередь и тема), которые включают имя JNDI, к которому JBoss привязывает фабрики. Отредактируйте их по своему усмотрению. Мне нужна была только фабрика Connection, поэтому я отредактировал имя JNDI и удалил два других определения.

Существуют примеры определений для ссылок назначения (которые почти не нужны для ActiveMQ, но полезны для других). Один для очереди, один для темы. Отредактируйте их по своему усмотрению.

Зависимость maven:

<dependency>
  <groupId>org.apache.activemq</groupId>
  <artifactId>activemq-rar</artifactId>
  <version>5.8.0</version>
  <type>rar</type>
</dependency>

Развертываемый EAR выглядит так:

sample.ear
    META-INF
        application.xml
    activemq-rar.rar  (file)
    activemq-config.rar  (directory)
        ra.xml   (extracted from activemq-rar.rar or generated)
        ironjacamar.xml  (generated, then edited)

На самом деле ra.xml можно извлечь из «настоящего» rar, но он также генерируется в выходном файле IronJacamar rar-info.sh, так что берите его из любого.

application.ear выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd" version="6">
  <display-name>JBoss7Sample Ear</display-name>
  <!--   Sample for WebSphereMQ
  <module><connector>wmq.jmsra.rar</connector></module>
  <module><connector>wmq-config.rar</connector></module>
  -->
  <module><connector>activemq-rar.rar</connector></module>
  <module><connector>amq-config.rar</connector></module>  
</application>

Еще раз подчеркну, что этот (на самом деле довольно простой) обходной путь важен для меня, потому что любая процедура развертывания, которая начинается с "Редактировать файл сервера с именем..." или "В управлении console......" не является стартовым в среде, на которую я ориентируюсь. Мне нужно предполагать, что нет доступа к внутренним каталогам vanilla JBoss 7 (EAP 6.1) или доступа к консоли, как можно было бы развертывание в конце сборки Jenkins или тому подобное. (Не говоря уже о том, что редактирование файлов для добавления развертывания само по себе не является стартовым).

Этот обходной путь и другие можно более подробно рассмотреть в этом проекте github, который был настроен специально для обмена некоторыми рабочими конфигурациями. которые я обнаружил, в противном случае довольно трудно найти.

P.S. Поскольку это единственный предложенный ответ, я присуждаю себе правильный ответ, но откажусь от него в пользу лучшего ответа.

person Nicholas    schedule 07.10.2013