Leichtgewichtige JEE Entwicklung mit dem Spring Framework

Leichtgewichtige JEE Entwicklung mit dem Spring Framework

Posts 1-3 of 3
  • Oliver Gierke
    Oliver Gierke    Premium Member
    The company name is only visible to registered members.
    Wildcards und Tomcat Classloader
    Hallo zusammen,

    ich versuche grad folgendes: ich möchte per Wildcards alle Files im Classpath mit dem Namen application-context.xml unterhalb eines bestimmten Packages laden:

    classpath*:com/foo/bar/**/application-context.xml

    Nun ist es aber so, dass das nur so lang funktioniert, wie diese Files in WEB-INF/classes liegen. XML Files in JARs werden nicht gefunden.

    Das Debugging hat mich soweit gebracht, dass der Tomcat Classloader keine Folder zurückgibt für getResources("com/foo/bar") (Spring macht wohl den lookup so). Versucht man getResources(..) mit dem kompletten Pfad zur Datei, findet er sie.

    Ich hab nun im Tomcat Bugzilla diesen Bug gefunden https://issues.apache.org/bugzilla/show_bug.cgi?id=41664. Der beschreibt das erwartete Verhalten zwar etwas komisch, ist aber grundsätzlich, dass was ich bzw. Spring benötigen würden. Komischerweise schließt der Bug mit "das ist genau so implementiert". Ist es aber scheinbar nicht. Der eclipseinterne Jetty tut leider auch nicht so wie er soll.

    Hat jemand Ideen / Anregungen? (... ausser die Wildcard wegzulassen? Das ist nämlich leider keine Option)

    Gruß
    Ollie
  • Joachim Arrasz
    Joachim Arrasz    Premium Member
    The company name is only visible to registered members.
    Re: Wildcards und Tomcat Classloader
    Hei,

    vielleicht hilft dir commons discovery weiter?

    Gruß Achim
  • Oliver Gierke
    Oliver Gierke    Premium Member
    The company name is only visible to registered members.
    Re^2: Wildcards und Tomcat Classloader
    Ich vermute nicht, denn das ganze stellt sich grad als Bug / Feature des Tomcat Classloader heraus. Grund ist die Abstraktion der JarFiles bzw. wie der Tomcat Classloader damit umgeht.

    In java.util.jar.JarFile ist nur jedes File (also eine richtige Datei) als JarEntry representiert. jarFile.getEntry("com/foo/bar") liefert null für bar als Ordner. Das gute Stück sollte eher über die Entries iterieren und schauen, ob es einen Entry gibt, der mit dem übergebenen Namen anfängt.

    Nunja, mal sehen, wie man dem Bugreport noch Nachdruck verleihen kann.

    Um das ganze etwas gruppenspezifischer zu machen: hat irgendjemand hier wider Erwarten eine Spring Webapp am laufen, die Konfigurationsfiles per Wildcards aus Jars ausliest?

    Gruß
    Ollie