решить отсутствующую зависимость postgresql без использования модулей JBoss или избежать ручных манипуляций с файлами, управляемыми jboss

Я использую postgresql, JBoss 7.1 и J2EE6. Моя структура проекта имеет 1 ухо с 1 JAR, содержащим EJB, и 1 WAR, удерживающим веб-фронт.

Я предоставляю драйвер postgresql как модуль JBoss и изменяю файл standalone.xml для ссылки на источник данных. С вышеперечисленным все работает нормально.

Теперь я хочу использовать arquillian для тестирования управляемого экземпляра jboss с источником данных postgres. Я не хочу менять jboss, загруженный maven, потому что я хочу доставить все свои зависимости в свое приложение (единственным приемлемым будет конфигурация источника данных внутри standalone.xml на JBoss).

Проблема: если я начинаю использовать postgresql jar внутри EarContent/lib проекта ear, я получаю отсутствующие/неудовлетворенные зависимости при запуске jboss, похоже, что jboss не может найти драйвер, развернутый внутри standalone/deployments. Просматривая веб-страницы, люди рассказывают примеры того, как использовать драйвер postgres с модулями, но это не то, что я хочу делать. Я хочу отправить драйвер postgresql вместе с приложением, чтобы я мог контролировать версии без особых усилий (и я могу протестировать postgres, не добавляя модуль в jboss, который я буду тестировать с помощью arquillian).

Как я могу добавить драйвер postgres для отправки с моим приложением без возникновения ошибки зависимостей missing/unsatisfied в JBoss?

Если это невозможно, как я могу изменить файлы JBoss, не изменяя их вручную каждый раз, когда я выполняю цель clean? Например, модули и standalone.xml.


person Fagner Brack    schedule 20.02.2013    source источник
comment
Я думаю, что этого довольно сложно добиться. См. этот комментарий, объясняющий, почему: stackoverflow.com/questions/3770741/   -  person Samuel EUSTACHI    schedule 20.02.2013
comment
Возможно, вы сможете что-то сделать с загрузчиками классов, но, поскольку это также изменение предоставленного jboss, это, вероятно, также неприемлемо для вас.   -  person Samuel EUSTACHI    schedule 20.02.2013
comment
Итак, как я могу сделать это с arquillian без ручного изменения управляемых файлов jboss? Есть ли API? Это тоже можно считать ответом.   -  person Fagner Brack    schedule 20.02.2013
comment
Не знаю, нашел это: stackoverflow.com/a/6096078/709881 Это может помочь   -  person Samuel EUSTACHI    schedule 20.02.2013
comment
То есть добавлять ресурсы в развертывание jboss, а не манипулировать самими файлами jboss.   -  person Fagner Brack    schedule 20.02.2013
comment
Оставив это в качестве комментария, поскольку я не пробовал это, и это может привести к сбою - вы можете определить jboss-deployment-structure.xml и развернуть драйвер postgresql как модуль JBoss в своем EAR. Вам также может понадобиться определить зависимости от этого упакованного модуля через запись Dependencies в других модулях. Дополнительные сведения о загрузке классов в AS7 см. в JBoss AS7< /а>.   -  person Vineet Reynolds    schedule 21.02.2013


Ответы (1)


Невозможно отправить драйверы в приложение (Должны ли драйверы JDBC быть включенным в ВОЙНУ?)

Однако я нашел способ решить эту проблему:
Создайте локальный репозиторий в maven для org.jboss.as:jboss-as-dist:7.1.1.Final, локальный репозиторий будет иметь собственный дистрибутив jboss с необходимыми драйверами в виде модулей (с другим идентификатором артефакта/группы, если необходимо).

При тестировании вы будете использовать свой собственный локальный репозиторий вместо официального, тогда у вас будет полный контроль над тем, какие файлы вам потребуются при тестировании с arquillian.

person Fagner Brack    schedule 21.02.2013