Ссылка на класс, упакованный в ухо из модуля JBoss

Я развертываю приложение уха (myear.ear) в WildFly 9.0.2. Ухо содержит модуль уха, назовем его myjar.jar.

Кроме того, у меня есть внешний пользовательский модуль JBoss. Из этого модуля мне нужно (неважно по какой причине) вызвать класс, упакованный в myjar.jar.

Это вообще возможно???

Вот как выглядит модуль JBoss module.xml:

<module xmlns="urn:jboss:module:1.1" name="path.to.module.dir">
    <resources>
        <resource-root path="..."/>
    </resources>
    <dependencies>
        <module name="deployment.myear.ear.myjar.jar"  />
    </dependencies>
</module>

В случае, если я могу обратиться к банке, упакованной в ухо из этого пользовательского модуля, как мне указать имя модуля. Вышеприведенное дает следующую ошибку:

Caused by: org.jboss.modules.ModuleLoadError: deployment.myear.ear.myjar.jar:main
    at org.jboss.modules.ModuleLoadException.toError(ModuleLoadException.java:74)
    at org.jboss.modules.Module.getPathsUnchecked(Module.java:1384)
    at org.jboss.modules.Module.loadModuleClass(Module.java:555)
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:197)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:455)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:404)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:385)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:130)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
    at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:353)
    at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:432)
    at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:269)
    at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:77)
    at org.jboss.modules.Module.loadModuleClass(Module.java:560)
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:197)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:455)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:404)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:385)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:130)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)

person Ori Dar    schedule 02.02.2016    source источник
comment
нет, это невозможно, зависимости могут идти только в обратном направлении --> развертывание --> статический модуль.   -  person Tomaz Cerar    schedule 03.02.2016


Ответы (2)


Способ включить внешний jar в модуль и загрузить его классы через загрузчик классов модуля ссылается на него как на внешний ресурс (при условии, что он существует в указанном месте:

<sub-deployment name="myjar.jar">
    <dependencies>
        ...
    </dependencies>
    <resources>
        <resource-root path="../../../modules/path/to/resource/jar" />
    </resources>
</sub-deployment>

Проход относительный (здесь где-то в каталоге модулей).

Принимая во внимание, что зависимость между развертываниями (и подразвертываниями) возможна.

person Ori Dar    schedule 10.02.2016

Невозможно. Уши могут зависеть только от модулей, а не наоборот

person Will T    schedule 03.02.2016