Нет жесткого правила, согласно которому имена модулей должны совпадать с именем пакета. Модули обычно просто используют имя пакета, так как это, вероятно, уникальное пространство имен. Например, вы можете создать модуль с именем example
с пакетом com.example
. module.xml
просто нужно в $JBOSS_HOME/modules/example/main
. Обратите внимание, что main
— это слот по умолчанию для модулей.
В module.xml
вам просто нужно сослаться на ваш файл jar и любые необходимые зависимости. Если вы хотите, чтобы зависимости были модулями сами по себе, вам нужно явно объявить их в файле module.xml
. Если вас не волнует, что у каждой зависимости есть собственный модуль, вы можете просто включить их все как ресурсы в файл module.xml
.
Пример модуля, использующего зависимости ресурсов:
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="example">
<resources>
<resource-root path="example.jar"/>
<resource-root path="guava-19.jar"/>
</resources>
</module>
В приведенном выше случае библиотеки example.jar
и guava-19.jar
должны находиться в каталоге $JBOSS_HOME/modules/example/main
.
Пример использования зависимостей модуля:
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="example">
<resources>
<resource-root path="example.jar"/>
</resources>
<dependencies>
<module name="com.google.guava"/>
</dependencies>
</module>
В приведенном выше случае только example.jar
должен находиться в каталоге $JBOSS_HOME/modules/example/main
.
Вы также можете использовать команду module add
CLI для добавления модулей в WildFly. Опять же, имя модуля не имеет значения, если оно уникально. Например, вот как добавить модуль PostgreSQL с CLI.
module add --name=org.postgresql --resources=~/Downloads/postgresql-9.4-1203.jdbc42.jar --dependencies=javax.api,javax.transaction.api
Использование CLI для добавления модулей позволяет избежать необходимости создавать структуру модуля и файл module.xml
вручную. Единственная загвоздка в том, что CLI и WildFly должны находиться в одной и той же файловой системе, а пользователь, запускающий CLI, должен иметь права на запись в $JBOSS_HOME/modules
. Команда автоматически создаст структуру каталогов, скопирует ресурсы и сгенерирует файл module.xml
.
Что касается MANIFEST.MF
записей. В модулях JBoss есть ключ входа, используемый для определения зависимостей модуля с именем Dependencies:
. Однако я считаю, что использование module.xml
немного удобнее, поэтому вам не нужно пересобирать или изменять двоичные файлы, если вам нужно добавить зависимость от модуля или удалить зависимость от модуля. Однако для развертываний может иметь смысл использовать запись MANIFEST.MF
.
Если вы еще не видели его, взгляните на загрузку класса. в документации WildFly. Это в основном объясняет, как работает загрузка классов для развертываний.
person
James R. Perkins
schedule
18.06.2016