Я пытаюсь создать модуль Wildfly для java-клиента OpenText Documentum. Раньше я запаковывал его jar-файлы в .war-файл, и мое приложение работало, но весило они 23 Мб.
В J2SE вы обычно просто добавляете основную банку, которая является dfc.jar
, и ее зависимости добавляются автоматически из-за записи Class-Path:
в dfc.jar/META-INF/MANIFEST.MF
. Однако, похоже, это не работает в Wildfly 11: я создал модуль, сделал мое веб-приложение зависимым от него, но когда я пытаюсь загрузить класс DfException
из основного jar-файла, Wildfly не может найти одну из зависимостей, которые находятся в та же папка:
Caused by: java.lang.NoClassDefFoundError: org/aspectj/lang/Signature
at com.documentum.fc.common.DfException.<clinit>(DfException.java:710)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.foo.PrintClassloaders.printClassloader0(PrintClassloaders.java:50)
Можно ли создать этот модуль, не добавляя все банки вручную?
Вот что я сделал:
module add --name=documentum.dfc2 --absolute-resources="C:\Program Files\Documentum\Shared\dfc.jar"
src/main/resources/META-INF/MANIFEST.MF:
Dependencies: documentum.dfc2
PrintClassloaders.java:
Class.forName("com.documentum.fc.common.DfException");
сгенерированный модуль.xml:
<module xmlns="urn:jboss:module:1.1" name="documentum.dfc2">
<resources>
<resource-root path="C:\Program Files\Documentum\Shared\dfc.jar"/>
</resources>
</module>
dfc.jar/META-INF/MANIFEST.MF:
Class-Path: All-MB.jar activation.jar aspectjrt.jar certj.jar commons-
codec-1.3.jar commons-lang-2.4.jar configservice-api.jar configservic
e-impl.jar cryptoj.jar cryptojce.jar cryptojcommon.jar dms-client-api
.jar jaxb-api.jar jaxb-impl.jar jcifs-krb5-1.3.1.jar jcm.jar jcmFIPS.
jar jcmandroidfips.jar jsr173_api.jar krbutil.jar log4j.jar questFixF
orJDK7.jar util.jar vsj-license.jar vsj-standard-3.3.jar xtrim-api.ja
r xtrim-server.jar
aspectjrt.jar
находится в той же папке. Почему он не выбран загрузчиком классов модуля?