Nested OSGi Bundle Problem
mreinhardt Feb 29, 2012 1:00 PMI've got a problem with my app migrating from JBoss 4.2.3 to 7.1. My Code does't load the bundle any more:
public void start(ClassLoader classLoader, String bundlePath) throws IOException, BundleException { // check that the directory where the bundles are deployed is valid AssertionUtil.assertNotNull("bundlePath", bundlePath); AssertionUtil.assertNotNull("classLoader", classLoader); classLoader.getResource("HLRPos-EJB.jar"); URL bundleURL = classLoader.getResource(bundlePath); if (bundleURL == null) { throw new FileNotFoundException("'" + bundlePath + "' cannot be found in the classloader '" + classLoader + "'"); } if (bundleURL.getProtocol().equals("file")) { File bundleDirAsFile; try { bundleDirAsFile = new File(bundleURL.toURI()); } catch (URISyntaxException ex) { throw new IOException(ex); } start(bundleDirAsFile); } else if (bundleURL.getProtocol().equals("jar")) { /* A JAR path */ Collection < String > jarBundles = new ArrayList < String >(); String jarPath = bundleURL.getPath().substring(5, bundleURL.getPath().indexOf("!")); //strip out only the JAR file JarFile jar = new JarFile(URLDecoder.decode(jarPath, "UTF-8")); Enumeration<JarEntry> entries = jar.entries(); //gives ALL entries in jar while(entries.hasMoreElements()) { JarEntry entry = entries.nextElement(); String name = entry.getName(); if (name.startsWith(bundlePath) && name.endsWith(".jar")) { jarBundles.add( "jar:file:" + jarPath + "!/" + name); } } start(jarBundles); } else { throw new IOException("cannot handle URL: " + bundleURL); }
bundleURL is always null. Any ideas?
My App-Structure is the following
MyApp.ear --> lib --> *.jar --> plugins --> myPlug.jar -->MyApp-EJB.war -->MyApp-Web.war --> lib -->ajax4jsf-1.1.1.jar -->commons-el-1.0.jar -->jdbc2_0-stdext.jar -->jettison-1.1.jar -->jsr311-api-1.1.1.jar -->myfaces-api-1.2.11.jar -->oscache-2.3.2.jar -->standard.jar -->asm-3.1.jar -->flexjson-2.1.jar -->jersey-bundle-1.6.jar -->jsf-facelets-1.1.15-seam.jar -->jstl-1.1.0.jar -->myfaces-impl-1.2.11.jar -->saxon9he.jar -->tomahawk-1.1.11.jar
myPlug.jar is an OSGI bundle...
Any ideas?