From: SourceForge.net <no...@so...> - 2012-11-27 22:25:09
|
Bugs item #3590496, was opened at 2012-11-27 14:25 Message generated for change (Tracker Item Submitted) made by philforge You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=720015&aid=3590496&group_id=130558 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Phil (philforge) Assigned to: Nobody/Anonymous (nobody) Summary: not writing metadata on jboss shutdown Initial Comment: I have an application deployed on jboss 6.1. I have applied the recommended practice (from the cobertura faq) of setting the following property -Djboss.shutdown.forceHalt=false However, cobertura still does not write out the coverage metadata on shutdown. While debugging, I noticed the following exception was being encountered when cobertura's shutdown hook was executing. java.lang.NoClassDefFoundError: net/sourceforge/cobertura/coveragedata/ClassData at net.sourceforge.cobertura.coveragedata.ProjectData.getOrCreateClassData(ProjectData.java:99) at net.sourceforge.cobertura.coveragedata.TouchCollector.getClassFor(TouchCollector.java:218) at net.sourceforge.cobertura.coveragedata.TouchCollector.applyTouchesOnProjectData(TouchCollector.java:190) at net.sourceforge.cobertura.coveragedata.ProjectData.saveGlobalProjectData(ProjectData.java:267) at net.sourceforge.cobertura.coveragedata.SaveTimer.run(SaveTimer.java:31) at java.lang.Thread.run(Thread.java:619) Caused by: java.lang.ClassNotFoundException: Class not found net.sourceforge.cobertura.coveragedata.ClassData at org.jboss.classloader.spi.base.BaseClassLoader.loadClassFromDomain(BaseClassLoader.java:897) at org.jboss.classloader.spi.base.BaseClassLoader.doLoadClass(BaseClassLoader.java:505) at org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:450) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) ... 6 more Caused by: java.lang.IllegalStateException: BaseClassLoader@5260acdc{vfs:///jboss/server/demo/conf/jboss-service.xml} classLoader is not connected to a domain (probably undeployed?) for class net.sourceforge.cobertura.coveragedata.ClassData at org.jboss.classloader.spi.base.BaseClassLoader.loadClassFromDomain(BaseClassLoader.java:881) ... 9 more I also noticed the following hack in initialize()... // Hack for Tomcat - by saving project data right now we force loading // of classes involved in this process (like ObjectOutputStream) // so that it won't be necessary to load them on JVM shutdown if (System.getProperty("catalina.home") != null) { saveGlobalProjectData(); // Force the class loader to load some classes that are // required by our JVM shutdown hook. // TODO: Use ClassLoader.loadClass("whatever"); instead ClassData.class.toString(); CoverageData.class.toString(); CoverageDataContainer.class.toString(); FileLocker.class.toString(); HasBeenInstrumented.class.toString(); LineData.class.toString(); PackageData.class.toString(); SourceFileData.class.toString(); } If I set the catalina.home system property, then cobertura will properly write out the metadata on jboss shutdown. It would be nice if a less "hacky" fix was put in place. Perhaps the classes could always be loaded regardless of the catalina.home system property? ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=720015&aid=3590496&group_id=130558 |