Author: rmannibucau Date: Fri Nov 2 22:24:59 2012 New Revision: 1405188 URL: http://svn.apache.org/viewvc?rev=1405188&view=rev Log: upgrading pax-web version in karafee + simplifying classloders in karafee + updating karafee cdi extension tracking osgi services to using objectclass property instead of using reflection
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java openejb/trunk/openejb/osgi/apache-karafee/pom.xml openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/RegisterOSGIServicesExtension.java Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java?rev=1405188&r1=1405187&r2=1405188&view=diff ============================================================================== --- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java (original) +++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java Fri Nov 2 22:24:59 2012 @@ -18,7 +18,6 @@ package org.apache.openejb.cdi; -import java.util.concurrent.ConcurrentHashMap; import org.apache.openejb.AppContext; import org.apache.openejb.OpenEJBRuntimeException; import org.apache.openejb.assembler.classic.AppInfo; @@ -45,6 +44,7 @@ import org.apache.webbeans.spi.ScannerSe import org.apache.webbeans.spi.SecurityService; import org.apache.webbeans.spi.TransactionService; import org.apache.webbeans.spi.adaptor.ELAdaptor; +import org.apache.webbeans.web.intercept.RequestScopedBeanInterceptorHandler; import java.util.Collections; import java.util.Comparator; @@ -52,7 +52,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; -import org.apache.webbeans.web.intercept.RequestScopedBeanInterceptorHandler; +import java.util.concurrent.ConcurrentHashMap; /** * @version $Rev:$ $Date:$ Modified: openejb/trunk/openejb/osgi/apache-karafee/pom.xml URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/apache-karafee/pom.xml?rev=1405188&r1=1405187&r2=1405188&view=diff ============================================================================== --- openejb/trunk/openejb/osgi/apache-karafee/pom.xml (original) +++ openejb/trunk/openejb/osgi/apache-karafee/pom.xml Fri Nov 2 22:24:59 2012 @@ -99,33 +99,6 @@ </executions> </plugin> <plugin> - <groupId>org.apache.karaf.tooling</groupId> - <artifactId>features-maven-plugin</artifactId> - <version>${karaf.version}</version> - <executions> - <execution> - <id>add-features-to-repo</id> - <phase>generate-resources</phase> - <goals> - <goal>add-features-to-repo</goal> - </goals> - <configuration> - <descriptors> - <descriptor>mvn:org.apache.openejb/openejb-feature/${openejb.version}/xml/features</descriptor> - <descriptor>mvn:org.apache.activemq/activemq-karaf/${org.apache.activemq.version}/xml/features</descriptor> - </descriptors> - <features> - <feature>openejb-server</feature> - <feature>war</feature> - <feature>transaction</feature> - <feature>webconsole</feature> - </features> - <repository>target/repo</repository> - </configuration> - </execution> - </executions> - </plugin> - <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> @@ -169,6 +142,54 @@ </execution> </executions> </plugin> + <plugin> <!-- quick way to update pax-web from karaf which is a buggy version (1.1.3), this should be removed when karaf will be upgraded --> + <groupId>org.codehaus.gmaven</groupId> + <artifactId>gmaven-plugin</artifactId> + <version>1.3</version> + <executions> + <execution> + <id>patch-pax-web</id> + <phase>generate-resources</phase> + <goals> + <goal>execute</goal> + </goals> + </execution> + </executions> + <configuration> + <source> + def karafVersion = project.properties['karaf.version'] + def file = new File(project.basedir, "target/dependencies/apache-karaf-${karafVersion}/system/org/apache/karaf/assemblies/features/standard/${karafVersion}/standard-${karafVersion}-features.xml") + file.write(file.text.replace('1.1.3', '1.1.5')) + </source> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.karaf.tooling</groupId> + <artifactId>features-maven-plugin</artifactId> + <version>${karaf.version}</version> + <executions> + <execution> + <id>add-features-to-repo</id> + <phase>generate-resources</phase> + <goals> + <goal>add-features-to-repo</goal> + </goals> + <configuration> + <descriptors> + <descriptor>mvn:org.apache.openejb/openejb-feature/${openejb.version}/xml/features</descriptor> + <descriptor>mvn:org.apache.activemq/activemq-karaf/${org.apache.activemq.version}/xml/features</descriptor> + </descriptors> + <features> + <feature>openejb-server</feature> + <feature>war</feature> + <feature>transaction</feature> + <feature>webconsole</feature> + </features> + <repository>target/repo</repository> + </configuration> + </execution> + </executions> + </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> Modified: openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java?rev=1405188&r1=1405187&r2=1405188&view=diff ============================================================================== --- openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java (original) +++ openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java Fri Nov 2 22:24:59 2012 @@ -119,11 +119,6 @@ public class Deployer implements BundleL return; } - final ClassLoader oldCl = Thread.currentThread().getContextClassLoader(); - final ClassLoader osgiCl = new OSGIClassLoader(bundle, OpenEJBBundleContextHolder.get().getBundle()); - - Thread.currentThread().setContextClassLoader(osgiCl); - final Set<Bundle> wiredBundles = BundleUtils.getWiredBundles(bundle); final Filter filter = new OSGiPrefixFilter(NewLoaderLogic.getExclusions()); for (Bundle b : wiredBundles) { @@ -153,6 +148,11 @@ public class Deployer implements BundleL } } + final ClassLoader oldCl = Thread.currentThread().getContextClassLoader(); + final ClassLoader osgiCl = new OSGIClassLoader(bundle, OpenEJBBundleContextHolder.get().getBundle()); + + Thread.currentThread().setContextClassLoader(osgiCl); + try { try { try { @@ -164,7 +164,7 @@ public class Deployer implements BundleL } LOGGER.info("looking bundle {} in {}", bundle.getBundleId(), bundleDump); - final AppModule appModule = new OSGiDeploymentLoader(bundle).load(bundleDump); + final AppModule appModule = new DeploymentLoader().load(bundleDump); LOGGER.info("deploying bundle #" + bundle.getBundleId() + " as an EJBModule"); final ConfigurationFactory configurationFactory = new ConfigurationFactory(); @@ -422,25 +422,6 @@ public class Deployer implements BundleL } @Override - protected Class findClass(final String name) throws ClassNotFoundException { - try { - return fallbackBundle.loadClass(name); - } catch (Exception ignored) { - // no-op - } - - try { - return this.backingBundle.loadClass(name); - } catch (ClassNotFoundException cnfe) { - throw new ClassNotFoundException(name + " not found from bundle [" + backingBundle.getSymbolicName() + "]", cnfe); - } catch (NoClassDefFoundError ncdfe) { - final NoClassDefFoundError e = new NoClassDefFoundError(name + " not found from bundle [" + backingBundle + "]"); - e.initCause(ncdfe); - throw e; - } - } - - @Override protected URL findResource(final String name) { URL url = fallbackBundle.getResource(name); if (url != null) { @@ -486,12 +467,32 @@ public class Deployer implements BundleL } @Override - protected Class loadClass(final String name, final boolean resolve) throws ClassNotFoundException { - final Class clazz = findClass(name); - if (resolve) { - resolveClass(clazz); + protected Class<?> findClass(final String name) throws ClassNotFoundException { + try { + return fallbackBundle.loadClass(name); + } catch (Exception ignored) { + // no-op + } + + try { + return this.backingBundle.loadClass(name); + } catch (ClassNotFoundException cnfe) { + throw new ClassNotFoundException(name + " not found from bundle [" + backingBundle.getSymbolicName() + "]", cnfe); + } catch (NoClassDefFoundError ncdfe) { + final NoClassDefFoundError e = new NoClassDefFoundError(name + " not found from bundle [" + backingBundle + "]"); + e.initCause(ncdfe); + throw e; } - return clazz; + } + + @Override + public Class<?> loadClass(final String name) throws ClassNotFoundException { + return findClass(name); + } + + @Override + protected Class<?> loadClass(final String name, final boolean resolve) throws ClassNotFoundException { + return findClass(name); } public String toString() { @@ -507,7 +508,7 @@ public class Deployer implements BundleL } @Override - protected ClassLoader getOpenEJBClassLoader() { + protected ClassLoader getOpenEJBClassLoader() { // TODO: valid it is still mandatory return new OSGIClassLoader(bundle, OpenEJBBundleContextHolder.get().getBundle()); } } Modified: openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/RegisterOSGIServicesExtension.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/RegisterOSGIServicesExtension.java?rev=1405188&r1=1405187&r2=1405188&view=diff ============================================================================== --- openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/RegisterOSGIServicesExtension.java (original) +++ openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/RegisterOSGIServicesExtension.java Fri Nov 2 22:24:59 2012 @@ -50,19 +50,22 @@ public class RegisterOSGIServicesExtensi final ServiceReference[] services = b.getRegisteredServices(); if (services != null) { for (ServiceReference service : services) { - try { - final Class<?> clazz = serviceClass(service); - if (clazz == null) { - continue; - } + String[] clazz = (String[]) service.getProperty("objectClass"); + if (clazz == null) { + continue; + } - current.loadClass(clazz.getName()); - abd.addBean(new OSGiServiceBean<Object>(service)); - LOGGER.debug("added service {} as a CDI Application scoped bean", clazz.getName()); - } catch (NoClassDefFoundError ignored) { - // no-op - } catch (ClassNotFoundException e) { - // can't load the class so no need to register the service + for (String name : clazz) { + try { + current.loadClass(name); + abd.addBean(new OSGiServiceBean<Object>(service)); + LOGGER.debug("added service {} as a CDI Application scoped bean", name); + break; + } catch (NoClassDefFoundError ignored) { + // no-op + } catch (ClassNotFoundException e) { + // can't load the class so no need to register the service + } } } }