You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by no...@apache.org on 2011/07/23 14:17:59 UTC
svn commit: r1150090 - in
/aries/trunk/application/application-runtime-isolated/src/main:
java/org/apache/aries/application/runtime/isolated/impl/
resources/OSGI-INF/blueprint/
Author: not
Date: Sat Jul 23 12:17:58 2011
New Revision: 1150090
URL: http://svn.apache.org/viewvc?rev=1150090&view=rev
Log:
ARIES-709 Update the application runtime isolated to do some tidy up if the bundle framework manager service goes away. This has the upshot that the application runtime doesn't take 5 minutes to shutdown anymore.
Modified:
aries/trunk/application/application-runtime-isolated/src/main/java/org/apache/aries/application/runtime/isolated/impl/ApplicationContextImpl.java
aries/trunk/application/application-runtime-isolated/src/main/java/org/apache/aries/application/runtime/isolated/impl/ApplicationContextManagerImpl.java
aries/trunk/application/application-runtime-isolated/src/main/resources/OSGI-INF/blueprint/app-context-management.xml
Modified: aries/trunk/application/application-runtime-isolated/src/main/java/org/apache/aries/application/runtime/isolated/impl/ApplicationContextImpl.java
URL: http://svn.apache.org/viewvc/aries/trunk/application/application-runtime-isolated/src/main/java/org/apache/aries/application/runtime/isolated/impl/ApplicationContextImpl.java?rev=1150090&r1=1150089&r2=1150090&view=diff
==============================================================================
--- aries/trunk/application/application-runtime-isolated/src/main/java/org/apache/aries/application/runtime/isolated/impl/ApplicationContextImpl.java (original)
+++ aries/trunk/application/application-runtime-isolated/src/main/java/org/apache/aries/application/runtime/isolated/impl/ApplicationContextImpl.java Sat Jul 23 12:17:58 2011
@@ -43,9 +43,9 @@ import org.apache.aries.application.mana
import org.apache.aries.application.management.BundleInfo;
import org.apache.aries.application.management.UpdateException;
import org.apache.aries.application.management.spi.framework.BundleFrameworkManager;
+import org.apache.aries.application.management.spi.repository.BundleRepository.BundleSuggestion;
import org.apache.aries.application.management.spi.repository.BundleRepositoryManager;
import org.apache.aries.application.management.spi.repository.ContextException;
-import org.apache.aries.application.management.spi.repository.BundleRepository.BundleSuggestion;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleException;
import org.slf4j.Logger;
@@ -58,6 +58,7 @@ public class ApplicationContextImpl impl
private final AriesApplication _application;
private final Set<Bundle> _bundles;
private ApplicationState _state = ApplicationState.UNINSTALLED;
+ private boolean _closed;
private final BundleRepositoryManager _bundleRepositoryManager;
private final BundleFrameworkManager _bundleFrameworkManager;
@@ -415,4 +416,18 @@ public class ApplicationContextImpl impl
}
}
}
+
+ public synchronized void close() throws BundleException
+ {
+ uninstall();
+ _closed = true;
+ }
+
+ public synchronized void open() throws BundleException
+ {
+ if (_closed) {
+ install();
+ _closed = false;
+ }
+ }
}
Modified: aries/trunk/application/application-runtime-isolated/src/main/java/org/apache/aries/application/runtime/isolated/impl/ApplicationContextManagerImpl.java
URL: http://svn.apache.org/viewvc/aries/trunk/application/application-runtime-isolated/src/main/java/org/apache/aries/application/runtime/isolated/impl/ApplicationContextManagerImpl.java?rev=1150090&r1=1150089&r2=1150090&view=diff
==============================================================================
--- aries/trunk/application/application-runtime-isolated/src/main/java/org/apache/aries/application/runtime/isolated/impl/ApplicationContextManagerImpl.java (original)
+++ aries/trunk/application/application-runtime-isolated/src/main/java/org/apache/aries/application/runtime/isolated/impl/ApplicationContextManagerImpl.java Sat Jul 23 12:17:58 2011
@@ -35,7 +35,6 @@ import org.apache.aries.application.mana
import org.apache.aries.application.management.AriesApplicationContext;
import org.apache.aries.application.management.ManagementException;
import org.apache.aries.application.management.UpdateException;
-import org.apache.aries.application.management.AriesApplicationContext.ApplicationState;
import org.apache.aries.application.management.spi.framework.BundleFrameworkManager;
import org.apache.aries.application.management.spi.repository.BundleRepositoryManager;
import org.apache.aries.application.management.spi.runtime.AriesApplicationContextManager;
@@ -70,9 +69,6 @@ public class ApplicationContextManagerIm
public void setBundleFrameworkManager(BundleFrameworkManager bfm)
{
- LOGGER.debug(LOG_ENTRY, "setBundleFrameworkManager", bfm);
- LOGGER.debug(LOG_EXIT, "setBundleFrameworkManager");
-
_bundleFrameworkManager = bfm;
}
@@ -193,4 +189,42 @@ public class ApplicationContextManagerIm
return ctx;
}
+ public void bindBundleFrameworkManager(BundleFrameworkManager bfm)
+ {
+ LOGGER.debug(LOG_ENTRY, "setBundleFrameworkManager", bfm);
+ LOGGER.debug(LOG_EXIT, "setBundleFrameworkManager");
+
+ Iterator<AriesApplicationContext> it = _appToContextMap.values().iterator();
+ while (it.hasNext())
+ {
+ try {
+ ApplicationContextImpl ctx = (ApplicationContextImpl)it.next();
+ ctx.open();
+ } catch (BundleException e)
+ {
+ LOGGER.debug(LOG_EXCEPTION,e);
+ }
+ }
+ }
+
+ public void unbindBundleFrameworkManager(BundleFrameworkManager bfm)
+ {
+ LOGGER.debug(LOG_ENTRY, "unbindBundleFrameworkManager", bfm);
+
+ Iterator<AriesApplicationContext> it = _appToContextMap.values().iterator();
+ while (it.hasNext())
+ {
+ try {
+ ApplicationContextImpl ctx = (ApplicationContextImpl)it.next();
+ ctx.close();
+ } catch (BundleException e)
+ {
+ LOGGER.debug(LOG_EXCEPTION,e);
+ }
+ }
+
+ LOGGER.debug(LOG_EXIT, "unbindBundleFrameworkManager");
+
+
+ }
}
\ No newline at end of file
Modified: aries/trunk/application/application-runtime-isolated/src/main/resources/OSGI-INF/blueprint/app-context-management.xml
URL: http://svn.apache.org/viewvc/aries/trunk/application/application-runtime-isolated/src/main/resources/OSGI-INF/blueprint/app-context-management.xml?rev=1150090&r1=1150089&r2=1150090&view=diff
==============================================================================
--- aries/trunk/application/application-runtime-isolated/src/main/resources/OSGI-INF/blueprint/app-context-management.xml (original)
+++ aries/trunk/application/application-runtime-isolated/src/main/resources/OSGI-INF/blueprint/app-context-management.xml Sat Jul 23 12:17:58 2011
@@ -26,7 +26,9 @@
<service interface="org.apache.aries.application.management.spi.runtime.AriesApplicationContextManager" ref="app-context-manager" ranking="-1"/>
- <reference id="bundle-framework-manager" interface="org.apache.aries.application.management.spi.framework.BundleFrameworkManager"/>
+ <reference id="bundle-framework-manager" interface="org.apache.aries.application.management.spi.framework.BundleFrameworkManager">
+ <reference-listener ref="app-context-manager" bind-method="bindBundleFrameworkManager" unbind-method="unbindBundleFrameworkManager"/>
+ </reference>
<reference id="bundle-repository-manager" interface="org.apache.aries.application.management.spi.repository.BundleRepositoryManager"/>
</blueprint>