Zwischen JBoss 4.0.1 und 4.0.2 haben sich die Einstellungen zum Laden von Klassen innerhalb des Webcontainers geändert. Mittlerweile ist der UCL standardmäßig abgeschaltet (JBServer/deploy/jbossweb-tomcat55.sar/META-INF/jboss-service.xml):
<!-- A flag indicating if the JBoss Loader should be used. This loader uses a unified class loader as the class loader rather than the tomcat specific class loader. The default is false to ensure that wars have isolated class loading for duplicate jars and jsp files. --> <attribute name="UseJBossWebLoader">false</attribute>Dies hat zur Folge, dass Klassen, die sowohl im .war innerhalb des .ear, als auch im .jar vorhanden sind (Facade.class, FacadeHome.class, AddrBean.class) damit von zwei unterschiedlichen Classloadern geladen werden, wodurch es zu ClassCastExceptions kommt.
Um diese Änderung durchzuführen, dürfen die entsprechenden Klassen nicht mehr im war-Task von build.xml zur .war-Datei hinzugefügt werden (und sind im folgenden einfach auskommentiert).
<classes dir="${gen-class.dir}"> <include name="**/servlets/*.class"/> <!-- <include name="**/beans/*.class"/> <include name="**/ejb/Facade.class"/> <include name="**/ejb/FacadeHome.class"/> --> </classes>Dies betrifft die entsprechenden Listing auf Seite 46 und Seite 69 oben.
Ich habe am 21.5.05 die Beispieldateien entsprechend aktualisiert.
[ Hauptseite ]