2016-11-11 4 views
0

Ich habe dieses Schema für einen in Wildfly eingesetzt EAR:Wildfly Classloader Problem zwischen Krieg lib und Ohr lib

  • EAR:
    • ejbA.jar
    • ejbB.jar
    • lib
      • LibInterfaceA.jar
      • LibInterfac eB.jar
    • WAR
      • lib
        • LibInterfaceA.jar

LibInterfaceA.jar ist eine Bibliothek von Schnittstellen verwendet, nur in ejb m odules (A adn B) und in WAR zum injizieren von ejb und erweitert in LibInterfaceB.jar.

Das Problem ist, mit Java-Reflexion, wenn ich für individuelle Anmerkungen innerhalb LibInterfaceA suchen:

public Annotation getAnnotazione(Method method, Class annotationType){ 
    Annotation annotazioni[] = method.getAnnotations(); 
    URL locationsearch = annotationType.getResource('/' + annotationType.getName().replace('.', '/') + ".class"); 
    for(Annotation a : annotazioni){ 
     Class klass = a.annotationType(); 
     URL location = klass.getResource('/' + klass.getName().replace('.', '/') + ".class"); 
     if(a.annotationType().getName().equals(annotationType.getName())){ 
      return a; 
     } 
    } 
    return null; 
} 

Ich nenne diese Methode in einer Klasse innerhalb der WAR die Anmerkung annotationType = @ Gewohnheit zu finden. @Custom ist von WAR/lib/LibInterfaceA.jar

Wenn ich diese Methode aufrufen, um auf einer Klasse zu finden, die eine LibInterfaceB Schnittstelle implementiert, die eine Schnittstelle in LibInterfeceA erweitert, ist die Annotation @Custom für die Methode der Jar EAR/lib /LibInterfaceA.jar, also sind die Klassen für das Classloading-Problem unterschiedlich.

Wie kann ich dieses Problem lösen?

+0

Ich bin etwas verwirrt. Sind die beiden LibinterfaceA.jar gleich an zwei verschiedenen Orten? –

Antwort

1

Sie können LibInterfaceA.jar aus dem Krieg entfernen. Standardmäßig können Sub-Deployments von ear sein lib-Verzeichnis verwenden (außer Sie setzen ear-subdeployments-isolated = true in jboss-depoyment-structure.xml des Ohrs)

+0

Behoben markiert die Abhängigkeit in Krieg als zur Verfügung gestellt, so dass die Bibliothek nur auf EAR-Ebene enthalten ist –

Verwandte Themen