Hmm, I've just built FileInstall from SVN and the class loading issue disappeared. Sorry for that part of the noise. However, the activate->deactivate->activate is still there.
On 26.03.2009 12:26:06 Jeremias Maerki wrote: > I'm currently looking at a strange effect that I'm not sure how to deal > with. Maybe someone has an idea: > > I'm using the FileInstall 0.9.0 bundle with Felix 1.4.1. I have a bundle > containing an LPR (line printer, port 515) server. Its uses Declarative > Services. When I change something in that bundle I rebuild it and copy > the JAR (same name and version) into the directory observed by > FileInstall. FileInstall notices that and updates the bundle. But when I > then send a print job to the LPR server I get this: > > [lpr.service.osgi.LPRServerImpl] INFO Stopping LPR > server...ch.jm.lpr.service.osgi.lprserveri...@a33ce2 > [lpr.service.impl.LPRServerImpl] INFO LPR server shutting down... > [org.apache.felix.fileinstall] ERROR Updated > C:\Dev\xxxxxxxxx\xxxxxx\load\ch.jm.lpr.service.jar > [lpr.service.osgi.LPRServerImpl] INFO Starting LPR > server...ch.jm.lpr.service.osgi.lprserveri...@151dcd6 > [lpr.service.impl.LPRServerImpl] INFO LPR server is listening at port 515 > [lpr.service.osgi.LPRServerImpl] INFO Stopping LPR > server...ch.jm.lpr.service.osgi.lprserveri...@151dcd6 > [lpr.service.osgi.LPRServerImpl] INFO Starting LPR > server...ch.jm.lpr.service.osgi.lprserveri...@8d2280 > [lpr.service.impl.LPRServerImpl] INFO LPR server is listening at port 515 > ERROR: JarContent: Unable to open JAR file. (java.util.zip.ZipException: The > system cannot find the path specified) > java.util.zip.ZipException: The system cannot find the path specified > at java.util.zip.ZipFile.open(Native Method) > at java.util.zip.ZipFile.<init>(ZipFile.java:203) > at java.util.jar.JarFile.<init>(JarFile.java:132) > at java.util.jar.JarFile.<init>(JarFile.java:97) > at org.apache.felix.framework.util.JarFileX.<init>(JarFileX.java:36) > at > org.apache.felix.framework.util.SecureAction.openJAR(SecureAction.java:515) > at > org.apache.felix.framework.cache.JarContent.openJarFile(JarContent.java:471) > at > org.apache.felix.framework.cache.JarContent.getEntryAsBytes(JarContent.java:165) > at > org.apache.felix.framework.searchpolicy.ContentClassLoader.findClass(ContentClassLoader.java:157) > at > org.apache.felix.framework.searchpolicy.ContentClassLoader.loadClassFromModule(ContentClassLoader.java:94) > at > org.apache.felix.framework.searchpolicy.ContentLoaderImpl.getClass(ContentLoaderImpl.java:166) > at > org.apache.felix.framework.searchpolicy.R4SearchPolicyCore.findClassOrResource(R4SearchPolicyCore.java:471) > at > org.apache.felix.framework.searchpolicy.R4SearchPolicyCore.findClass(R4SearchPolicyCore.java:185) > at > org.apache.felix.framework.searchpolicy.R4SearchPolicy.findClass(R4SearchPolicy.java:45) > at > org.apache.felix.framework.searchpolicy.ContentClassLoader.loadClass(ContentClassLoader.java:118) > at java.lang.ClassLoader.loadClass(ClassLoader.java:251) > at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) > at > ch.jm.lpr.service.impl.LPRServerImpl.handleConnection(LPRServerImpl.java:69) > at > ch.jm.lpr.service.impl.LPRServerImpl.access$200(LPRServerImpl.java:21) > at ch.jm.lpr.service.impl.LPRServerImpl$1.run(LPRServerImpl.java:54) > Exception in thread "LPR Server Thread" java.lang.NoClassDefFoundError: > ch/jm/lpr/service/impl/LPRServerImpl$2 > at > ch.jm.lpr.service.impl.LPRServerImpl.handleConnection(LPRServerImpl.java:69) > at > ch.jm.lpr.service.impl.LPRServerImpl.access$200(LPRServerImpl.java:21) > at ch.jm.lpr.service.impl.LPRServerImpl$1.run(LPRServerImpl.java:54) > > Debugging, I found that the ModuleImpl's m_contentLoader > (ContentLoaderImpl) has a m_content (JarContent) that displays: > JAR .\felix-cache\bundle28\version23.1\bundle.jar > > However, looking at the Felix cache, version23.1 has been removed and > replaced by version24.0. It is as if the refresh was incomplete somehow. > The component works fine when Felix is freshly started. So it looks to > me like the class loader is not replaced and after the update the class > loader tries to load from an inexistent/deleted JAR file. > > The component declaration just in case: > <component name="ch.jm.lpr.server"> > <implementation class="ch.jm.lpr.service.osgi.LPRServerImpl"/> > <property name="service.description" value="JM :: LPR Server"/> > <property name="service.vendor" value="Jeremias Märki"/> > </component> > > Am I missing anything? > > BTW, any reason why the update action of FileInstall is logging with > "ERROR" level and not "INFO"? > > And another thing you can see above: After the update the LPR server is > started (activate(ComponentContext)) and stopped > (deactivate(ComponentContext)) immediately after that, only to be > reactivated again. I'm seeing the same behaviour (but at startup) with > another component. Any hints? > > Thanks a lot, > Jeremias Maerki > Jeremias Maerki --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

