Настройка Spring и JBoss
Мы создаем серию новых приложений Spring с общими файлами поддержки JAR. В приложениях, развернутых в среде Tomcat, мир хорош. К этим же JAR-файлам должны обращаться устаревшие приложения, работающие под JBoss в среде, отличной от Spring. Может кто-то указать мне местоположение или объяснить здесь, как настроить Spring и JBoss так, чтобы JAR-файлы функционировали должным образом, или как упаковать их так, чтобы зависимости Spring были частью JAR-файла. Maven также в смеси.
1 ответ
Вы можете определить Spring как модуль
Ниже приведены шаги для создания модуля Spring:
1. Загрузите нужную версию Spring. Для этого примера мы используем Spring 3.1.1.
2. Создайте каталог: $ JBOSS_HOME / modules / org / springframework / spring / main.
3. Скопируйте библиотеки Spring, которые вы загрузили в этот каталог.
4. Создайте module.xml со следующим содержимым в этом каталоге. Убедитесь, что они соответствуют именам библиотек:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="org.springframework.spring">
<resources>
<resource-root path="org.springframework.aop-3.1.1.RELEASE.jar"/>
<resource-root path="org.springframework.asm-3.1.1.RELEASE.jar"/>
<resource-root path="org.springframework.aspects-3.1.1.RELEASE.jar"/>
<resource-root path="org.springframework.beans-3.1.1.RELEASE.jar"/>
<resource-root path="org.springframework.context-3.1.1.RELEASE.jar"/>
<resource-root path="org.springframework.context.support-3.1.1.RELEASE.jar"/>
<resource-root path="org.springframework.core-3.1.1.RELEASE.jar"/>
<resource-root path="org.springframework.expression-3.1.1.RELEASE.jar"/>
<resource-root path="org.springframework.instrument-3.1.1.RELEASE.jar"/>
<resource-root path="org.springframework.instrument.tomcat-3.1.1.RELEASE.jar"/>
<resource-root path="org.springframework.jdbc-3.1.1.RELEASE.jar"/>
<resource-root path="org.springframework.jms-3.1.1.RELEASE.jar"/>
<resource-root path="org.springframework.orm-3.1.1.RELEASE.jar"/>
<resource-root path="org.springframework.oxm-3.1.1.RELEASE.jar"/>
<resource-root path="org.springframework.test-3.1.1.RELEASE.jar"/>
<resource-root path="org.springframework.transaction-3.1.1.RELEASE.jar"/>
<resource-root path="org.springframework.web-3.1.1.RELEASE.jar"/>
<resource-root path="org.springframework.web.portlet-3.1.1.RELEASE.jar"/>
<resource-root path="org.springframework.web.servlet-3.1.1.RELEASE.jar"/>
<resource-root path="org.springframework.web.struts-3.1.1.RELEASE.jar"/>
</resources>
<dependencies>
<module name="org.apache.commons.logging"/>
<module name="javax.api" export="true"/>
<module name="org.jboss.vfs"/>
</dependencies>
</module>
Вот абсолютный минимальный файл module.xml (другая версия Spring не имеет значения):
<?xml version="1.0"?>
<module xmlns="urn:jboss:module:1.1" name="org.springframework.spring">
<resources>
<resource-root path="spring-aop-3.2.3.RELEASE.jar"/>
<resource-root path="spring-beans-3.2.3.RELEASE.jar"/>
<resource-root path="spring-context-3.2.3.RELEASE.jar"/>
<resource-root path="spring-core-3.2.3.RELEASE.jar"/>
<resource-root path="spring-expression-3.2.3.RELEASE.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="org.apache.commons.logging"/>
</dependencies>
</module>
5. Поместите следующий файл jboss-deploy-structure.xml в архив приложения (WEB-INF/jboss-deploy-structure.xml для WAR или META-INF/jboss-deploy-structure.xml для EAR или EJB-jar) в используйте вышеуказанный модуль:
Если вы используете JBoss EAP 6.1.x и выше, используйте ниже:
?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="org.springframework.spring" export="true" meta-inf="export"/>
</dependencies>
</deployment>
</jboss-deployment-structure>
Если JBoss EAP 6.0.x, то используйте ниже
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="org.springframework.spring" export="true">
<imports>
<include path="META-INF**"/>
<include path="org**"/>
</imports>
<exports>
<include path="META-INF**"/>
<include path="org**"/>
</exports>
</module>
</dependencies>
</deployment>
</jboss-deployment-structure>
Примечание. В JBoss EAP 6.1.0 была добавлена метаинформация для модуля в jboss-deploy-structure.xml, которая позволяет видеть файлы в META-INF ресурса. Поскольку это было недоступно в JBoss EAP 6.0.x, этот раздел позволяет вам получить доступ к каталогу META-INF, который по умолчанию не отображается.
Примечание. Модуль Spring Framework не должен включать такие ресурсы, как servlet-api.jar, xml-apis.jar, jta-api.jar и другие API. Эти API реализуются либо JDK, либо JBoss, и попытка использовать другую версию API приведет к проблемам с загрузкой классов и другим проблемам.
Примечание. Модуль Spring должен включать все свои зависимости, не связанные с Java / JavaEE. Модуль Spring может зависеть от javax.api / javaee.api, предоставленного JBoss и любого общедоступного модуля JBoss, но для других зависимостей, таких как Spring, таких как aopalliance, их необходимо будет включить в качестве ресурсов в модуль или в другой пользовательский модуль.