У меня есть wildfly с созданным весенним модулем и myApp.ear,
myApp.ear содержит myApp.war и внутри него WEB-INF / lib / commons-pool2-2.4.2.jar и WEB-INF / lib / myApp-core.jar
внутри myApp-core.jar у меня есть контекст весны, который имеет:
<bean id="myAppPoolTargetSource" class="org.springframework.aop.target.CommonsPool2TargetSource">
<property name="targetBeanName" value="dataPostComponentTarget" />
<property name="maxSize" value="${POOL_POST_SIZE}" />
<property name="maxIdle" value="${POOL_POST_SIZE}"/>
<property name="minIdle" value="${POOL_POST_SIZE}"/>
</bean>
И у меня есть дескриптор развертывания jboss jboss-deploy-structure.xml:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<jboss-deployment-structure>
<deployment>
<dependencies>
<module export="true" meta-inf="export" name="org.springframework.spring"/>
<module export="true" meta-inf="export" name="org.apache.cxf"/>
<module export="true" meta-inf="export" name="org.apache.cxf.impl"/>
<module export="true" name="javax.orb.api"/>
<module export="true" name="org.apache.commons.beanutils"/>
</dependencies>
<exclude-subsystems>
<subsystem name="logging"/>
</exclude-subsystems>
</deployment>
</jboss-deployment-structure>
Также я создал модуль в wildfly для весны здесь это module.xml:
<?xml version='1.0' encoding='UTF-8'?>
<module xmlns="urn:jboss:module:1.5" name="org.springframework.spring">
<resources>
<resource-root path="spring-beans-4.3.14.RELEASE.jar"/>
<resource-root path="spring-core-4.3.14.RELEASE.jar"/>
<resource-root path="spring-aop-4.3.14.RELEASE.jar"/>
<resource-root path="spring-expression-4.3.14.RELEASE.jar"/>
<resource-root path="spring-web-4.3.14.RELEASE.jar"/>
<resource-root path="spring-webmvc-4.3.14.RELEASE.jar"/>
<resource-root path="spring-jms-4.3.14.RELEASE.jar"/>
<resource-root path="spring-messaging-4.3.14.RELEASE.jar"/>
<resource-root path="spring-tx-4.3.14.RELEASE.jar"/>
<resource-root path="spring-context-4.3.14.RELEASE.jar"/>
<resource-root path="spring-context-support-4.3.14.RELEASE.jar"/>
<resource-root path="spring-oxm-4.3.14.RELEASE.jar"/>
</resources>
<dependencies>
<module name="org.apache.commons.logging"/>
<module name="org.jboss.vfs" />
<module name="org.jboss.msc" />
<module name="javaee.api"/>
</dependencies>
</module>
Для других мое ухо работает отлично, но для этого оно не работает:
Caused by: java.lang.NoClassDefFoundError: Failed to link org/springframework/aop/target/CommonsPool2TargetSource (Module "org.springframework.spring" from local module loader @51931956 (finder: local module finder @2b4a2ec7 (roots: C:\wildfly-11.0.0.Final\modules,C:\wildfly-11.0.0.Final\modules\system\layers\base))): org/apache/commons/pool2/PooledObjectFactory
Причина, по которой полностью понятный загрузчик классов весеннего модуля не может видеть классы внутри myApp.war / lib, но как я могу сделать их видимыми?
чтобы сделать модуль видимым для другого развертывания, я мог бы добавить «export = true» в зависимости, но как это сделать в другом направлении?
UPDATE
Я попытался переместить jar библиотеки пула в .ear / lib и установил
<ear-subdeployments-isolated>false</ear-subdeployments-isolated>
в дескрипторе развертывания, но без эффекта