Nie sądziłem, że skończę tutaj, ale po wielu wyszukiwaniach Google i StackOverflow tutaj jestem.Jboss EAP 7 - Jak wykluczyć niejawne moduły z wdrożenia (javax.jms)?
This is my exact problem z tym, że nie mogę sobie pozwolić na zmiany kodu.
Wariant, który próbuję wdrożyć, zawiera bibliotekę JMS (tj. javax.jms, której nie można wykluczyć z WAR), która jest już ładowana domyślnie przez Jboss EAP 7. Ścieżka do jar
jest podobna do tej jboss/modules/system/layers/base/javax/jms/api/ain/jboss-jms-api_2.0_spec-1.0.0.Final-redhat-1.jar
. Z powodu tej dwóch różnych wersji tych samych klas ładowanie otrzymuję ClassCastException.
org.apache.activemq-ra.ActiveMQConnectionFactory cannot to be cast to javax.jms.ConnectionFactory
Tak, chcę JBoss do NIE obciążenia javax.jms tak, że moja aplikacja może korzystać z JAR dołączone do wojny.
Tak, zastanawiałem się, czy istnieje sposób, aby wykluczyć moduł globalnie (dla wszystkich wdrożeń WAR).
Wyłączenie go na wdrożenie również by działało. I zdaję sobie sprawę, że można go używać pod kontrolą jboss-deployment-structure.xml, ale nie mogę go uruchomić.
Oto, co starałem:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure
xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<exclude-subsystems>
<subsystem name="javax" />
<subsystem name="javax.jms" />
</exclude-subsystems>
</deployment>
</jboss-deployment-structure>
i
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure
xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<exclusions>
<module name="javax" />
<module name="javax.jms" />
<module name="javax.jms.api" />
</exclusions>
</deployment>
</jboss-deployment-structure>
umieściłem plik w WEB-INF katalogu. To nie zadziałało. Wciąż ładował klasę JMS z folderumodułów JBoss EAP. Jak to zrobić poprawnie?
Nie jestem pewien, czy to zadziała, ale nazwą podsystemu powinien być "messaging-activemq", np. ' ' w wykluczeniu. Jednak nie jestem pewien, czy JMS będzie działał prawidłowo w twoim wdrożeniu, chyba że uwzględnisz również implementację. –