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
- lib
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?
Ich bin etwas verwirrt. Sind die beiden LibinterfaceA.jar gleich an zwei verschiedenen Orten? –