Author: rmannibucau
Date: Sun Nov  4 13:47:59 2012
New Revision: 1405542

URL: http://svn.apache.org/viewvc?rev=1405542&view=rev
Log:
OPENEJB-1928 avoiding to load openejb classes with several classloaders + 
activating filtering directly on bundle

Modified:
    
openejb/trunk/openejb/osgi/apache-karafee/src/main/filtered-resources/etc/system.properties
    
openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java
    openejb/trunk/openejb/osgi/pom.xml

Modified: 
openejb/trunk/openejb/osgi/apache-karafee/src/main/filtered-resources/etc/system.properties
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/apache-karafee/src/main/filtered-resources/etc/system.properties?rev=1405542&r1=1405541&r2=1405542&view=diff
==============================================================================
--- 
openejb/trunk/openejb/osgi/apache-karafee/src/main/filtered-resources/etc/system.properties
 (original)
+++ 
openejb/trunk/openejb/osgi/apache-karafee/src/main/filtered-resources/etc/system.properties
 Sun Nov  4 13:47:59 2012
@@ -34,6 +34,10 @@ openejb.logger.external=true
 # use log4j logger, pax is an adapted version of openejb log4j logger for pax 
logging
 openejb.log.factory=pax
 
+# deploy openejb internal application
+# to get access to OpenEJB deployer etc
+openejb.system.apps = true
+
 
 # Log level when the pax-logging service is not available
 # This level will only be used while the pax-logging service bundle

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=1405542&r1=1405541&r2=1405542&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
 Sun Nov  4 13:47:59 2012
@@ -71,6 +71,8 @@ public class Deployer implements BundleL
     private static final Logger LOGGER = 
LoggerFactory.getLogger(Deployer.class);
     private static Deployer INSTANCE = null;
 
+    private static final Filter BUNDLE_FILTER = new 
OSGiPrefixFilter(NewLoaderLogic.getExclusions());
+
     private final Map<Bundle, List<ServiceRegistration>> registrations = new 
ConcurrentHashMap<Bundle, List<ServiceRegistration>>();
     private final Map<Bundle, String> paths = new ConcurrentHashMap<Bundle, 
String>();
 
@@ -89,18 +91,19 @@ public class Deployer implements BundleL
 
     @Override
     public void bundleChanged(final BundleEvent event) {
-        openejbActivator.checkServiceManager(OpenEJBBundleContextHolder.get());
         switch (event.getType()) {
             case BundleEvent.STARTED:
                 final BundleContext context = 
event.getBundle().getBundleContext();
                 if (context != null) {
                     deploy(event.getBundle());
                 }
-                break;
+            break;
+
             case BundleEvent.STOPPED:
             case BundleEvent.UNINSTALLED:
                 undeploy(event.getBundle());
-                break;
+            break;
+
             case BundleEvent.UPDATED:
                 try {
                     undeploy(event.getBundle());
@@ -110,20 +113,21 @@ public class Deployer implements BundleL
                     LOGGER.warn("can't undeploy bundle #{}", 
event.getBundle().getBundleId());
                 }
                 deploy(event.getBundle());
-                break;
+            break;
         }
     }
 
     private void deploy(final Bundle bundle) {
-        if (bundle.getBundleContext() == null) {
+        if (bundle.getBundleContext() == null
+                || (bundle.getLocation() != null && 
!BUNDLE_FILTER.accept(bundle.getLocation()))) {
             return;
         }
 
         final Set<Bundle> wiredBundles = BundleUtils.getWiredBundles(bundle);
-        final Filter filter = new 
OSGiPrefixFilter(NewLoaderLogic.getExclusions());
+
         for (Bundle b : wiredBundles) {
             final String location = b.getLocation();
-            if (location == null || !filter.accept(location)) {
+            if (location == null || !BUNDLE_FILTER.accept(location)) {
                 continue;
             }
 
@@ -153,6 +157,8 @@ public class Deployer implements BundleL
 
         Thread.currentThread().setContextClassLoader(osgiCl);
 
+        openejbActivator.checkServiceManager(OpenEJBBundleContextHolder.get());
+
         try {
             try {
                 try {

Modified: openejb/trunk/openejb/osgi/pom.xml
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/pom.xml?rev=1405542&r1=1405541&r2=1405542&view=diff
==============================================================================
--- openejb/trunk/openejb/osgi/pom.xml (original)
+++ openejb/trunk/openejb/osgi/pom.xml Sun Nov  4 13:47:59 2012
@@ -43,4 +43,15 @@
     <karaf.version>2.3.0</karaf.version>
     <karafee.version>1.5.1-SNAPSHOT</karafee.version>
   </properties>
+
+  <!-- for debugging pupose
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>org.apache.felix.framework</artifactId>
+      <version>4.0.3</version>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
+  -->
 </project>


Reply via email to