Jak mogę dodać moduł jboss 7.1 zawierający klasy, które implementują / rozszerzają klasy z głównego pliku ucha serwera?

Mam serwer JBoss, który ma plik ucha. Mój plik ucha ma plik wojny. Plik wojny ma plik jar „server-artifact.jar”. Punkt końcowy usługi mojego serwera znajduje się w tym słoiku. Klasa w pliku jar dynamicznie ładuje klasę, aby wykonać akcję.

Class<?> clazz = (Class<?>) Class.forName("com.test.TestExternalAccess");
try {
  TestExternalAccessParent extClassObject = (TestExternalAccessParent) clazz.newInstance();
  extClassObject.sayHelloToExternalAccess();
} catch (InstantiationException | IllegalAccessException e) {
  e.printStackTrace();
}

Plik jar, który zawiera „TestExternalAccessParent”, który jest interfejsem, jest również częścią pliku wojny. Klasa „TestExternalAccess” to konkretna klasa, która ma być jednostką podłączalną dla mojego serwera. Aby to osiągnąć, stworzyłem moduł jboss i umieściłem go w folderze modułów (w jaki sposób?):

<module xmlns="urn:jboss:module:1.1" name="com.test">
  <resources>
    <resource-root path="externalLibrary-0.0.1-SNAPSHOT.jar"/>
  </resources>
</module>

Zmodyfikowałem także plik jboss-deployment-structure.xml i dodałem zależność<module name="com.test" /> Uruchomię mój serwer i uruchomię go. Otrzymuję następujący wyjątek, gdy następuje dynamiczne ładowanie klasy:java.lang.ClassNotFoundException: com.test.TestExternalAccess from [Module "deployment.myservice-ear.ear:main" from Service Module Loader]

Kilka rzeczy, które próbowałem: 1) Próbowałem wczytać klasę z zewnętrznego modułu, który nie implementuje interfejsu w pliku jar głównego pliku ucha i działa dobrze. 2) Zmieniono mój moduł tak, aby zawierał plik jar zawierający interfejs.

<module xmlns="urn:jboss:module:1.1" name="com.test">
  <resources>
    <resource-root path="externalLibrary-0.0.1-SNAPSHOT.jar"/>
    <resource-root path="externalParentLibrary-0.0.1-SNAPSHOT.jar"/>
  </resources>
</module>

To też działa dobrze. 3) Dodano następującą zależność od mojego modułu:

<dependencies>
  <module name="deployment.myservice-ear.ear"/>
</dependencies>

To nie działa.

Program ładujący klasy, który załadował moje ucho, używa innego programu ładującego klasy, aby załadować mój zewnętrzny moduł i uzyskać dostęp do klas w tym module. Ale klasy w moim module zewnętrznym nie mogą uzyskać dostępu do słoików w uchu. Jak mogę to zrobić? Chcę dodać zewnętrzne moduły biblioteczne, które mają dostęp do klas w klasach plików ucha mojego serwera.

questionAnswers(1)

yourAnswerToTheQuestion