Mittwoch, November 08, 2006

 

Classloader Hell

Tja, bin gerade dabei im Rahmen meiner Online-Marketing-Toolbox eine Tomcat-TrackingValve zu schreiben. Speicherung über einen Service, auf den die Valve via Spring zugreifen soll und damit geht der Spass los...

Der Tomcat verwendet eine Classloader-Hierarchie um verschiedene Sichtbarkeiten zu ermöglichen. Damit meine TrackingValve von org.apache.catalina.valves.ValveBase erben kann (org.apache.catalina.* liegen im server/lib/catalina.jar = 'Catalina' in der Hierarchie) muss das JAR-Archiv mit meiner Valve in server/lib abgelegt werden.

Wenn die TrackingValve das erste Mal aufgerufen wird, soll der ApplicationContext initialisiert werden. Die applicationContext.xml liegt im Classpath und deshalb wird der ClassPathXmlApplicationContext benutzt. Versucht man es nun ohne weiteres bekommt man bei der Initalisierung - oder besser bei dem Versuch einer Initialisierung folgende Fehlermeldung:

2:04:04,640 INFO (Catalina.java:559) - Server startup in 828 ms
12:04:12,156 ERROR (CoyoteAdapter.java:157) - An exception or error occurred in the container during the request processing
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [tracking-valve-applicationContext.xml]; nested exception is
java.io.FileNotFoundException: class path resource [tracking-valve-applicationContext.xml] cannot be opened because it does not exist
Caused by:

java.io.FileNotFoundException: class path resource [tracking-valve-applicationContext.xml] cannot be opened because it does not exist
at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:137)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:351)
...


Nach wildem herumkopieren der applicationContext.xml folgendes Ergebnis: Wenn die applicationContext.xml im Verzeichnis shared/classes liegt, wird sie gefunden. Nicht aber in server/classes - was ich eigentlich erwartet hätte. In shared/class wird sie auch nicht gefunden - aber das beruhigt mich eigentlich, weil dort ja nur die Sachen der Webapps liegen sollen.

Tja, das scheint mir eine berechtigte Frage und deshalb wird dann jetzt mal eine Anfrage in der Tomcat-Mailingliste gestartet.

To be continued....

Dienstag, November 07, 2006

 

SEO ist wie Segeln

Wenn Wind da ist, ist alles toll.
Wenn kein Wind da ist, ist alles scheiße.

Momentan kein Wind...

This page is powered by Blogger. Isn't yours?