public class BundleFactoryBean extends java.lang.Object implements org.springframework.beans.factory.FactoryBean<org.osgi.framework.Bundle>, BundleContextAware, org.springframework.beans.factory.InitializingBean, org.springframework.beans.factory.DisposableBean, org.springframework.context.ResourceLoaderAware
Bundle installer.
This FactoryBean allows customers to use Spring to drive bundle management. Bundles states can be
modified using the action (defaults to start) and destroyAction (not set by
default) parameters.
For example, to automatically install and start a bundle from the local maven repository (assuming the bundle
has been already retrieved), one can use the following configuration:
<osgi:bundle id="aBundle" symbolic-name="org.company.bundles.a"
location="file:${localRepository }/org/company/bundles/a/${pom.version}/a-${pom.version}.jar"
action="start"/>
Note: Pay attention when installing bundles dynamically since classes can be loaded
aggressively.BundleAction| Modifier and Type | Field and Description |
|---|---|
private BundleActionEnum |
action |
private org.osgi.framework.Bundle |
bundle
Actual bundle
|
private org.osgi.framework.BundleContext |
bundleContext |
private java.lang.ClassLoader |
classLoader |
private BundleActionEnum |
destroyAction |
private java.lang.String |
location
Bundle location
|
private static org.apache.commons.logging.Log |
log |
private boolean |
pushBundleAsContextClassLoader
unused at the moment
|
private org.springframework.core.io.Resource |
resource |
private org.springframework.core.io.ResourceLoader |
resourceLoader |
private int |
startLevel |
private java.lang.String |
symbolicName
Bundle symName
|
| Constructor and Description |
|---|
BundleFactoryBean() |
| Modifier and Type | Method and Description |
|---|---|
void |
afterPropertiesSet() |
void |
destroy() |
protected void |
executeAction(BundleActionEnum action) |
private org.osgi.framework.Bundle |
findBundle()
Find a bundle based on the configuration (don't apply any actions for it).
|
BundleAction |
getAction()
Deprecated.
As of Spring DM 2.0, replaced by
getBundleAction() |
org.osgi.framework.Bundle |
getBundle()
Returns the bundle with which the class interacts.
|
BundleActionEnum |
getBundleAction()
Returns the bundle action.
|
BundleActionEnum |
getBundleDestroyAction()
Returns the bundle destroy action.
|
BundleAction |
getDestroyAction()
Deprecated.
As of Spring DM 2.0, replaced by
getBundleDestroyAction() |
java.lang.String |
getLocation()
Return the given location.
|
org.osgi.framework.Bundle |
getObject() |
java.lang.Class<? extends org.osgi.framework.Bundle> |
getObjectType() |
org.springframework.core.io.Resource |
getResource()
Return the
Resource object (if a ResourceLoader is available) from the given location (if any). |
int |
getStartLevel()
Gets the bundle start level.
|
java.lang.String |
getSymbolicName()
Return the given bundle symbolic name.
|
private org.osgi.framework.Bundle |
installBundle()
Install bundle - the equivalent of install action.
|
boolean |
isSingleton() |
void |
setAction(BundleAction action)
Deprecated.
As of Spring DM 2.0, replaced by
#setBundleAction(BundleAction) |
void |
setBundle(org.osgi.framework.Bundle bundle)
Set the backing bundle used by this class.
|
void |
setBundleAction(BundleActionEnum action)
Action to execute at startup.
|
void |
setBundleContext(org.osgi.framework.BundleContext context)
Set the
BundleContext that this bean runs in. |
void |
setBundleDestroyAction(BundleActionEnum action)
Action to execute at shutdown.
|
void |
setClassLoader(java.lang.ClassLoader classloader) |
void |
setDestroyAction(BundleAction action)
Deprecated.
As of Spring DM 2.0, replaced by
setBundleDestroyAction(BundleActionEnum) |
void |
setLocation(java.lang.String url)
Set the bundle location (optional operation).
|
void |
setPushBundleAsContextClassLoader(boolean pushBundleAsContextClassLoader)
Determines whether invocations on the remote service should be performed in the context (thread context class
loader) of the target bundle's ClassLoader.
|
void |
setResourceLoader(org.springframework.core.io.ResourceLoader resourceLoader) |
void |
setStartLevel(int startLevel)
Sets the bundle start level.
|
void |
setSymbolicName(java.lang.String symbolicName)
Set the bundle symbolic name (optional operation).
|
private void |
updateStartLevel(int level) |
private static org.apache.commons.logging.Log log
private java.lang.String location
private org.springframework.core.io.Resource resource
private org.springframework.core.io.ResourceLoader resourceLoader
private java.lang.String symbolicName
private org.osgi.framework.Bundle bundle
private org.osgi.framework.BundleContext bundleContext
private BundleActionEnum action
private BundleActionEnum destroyAction
private int startLevel
private java.lang.ClassLoader classLoader
private boolean pushBundleAsContextClassLoader
public java.lang.Class<? extends org.osgi.framework.Bundle> getObjectType()
getObjectType in interface org.springframework.beans.factory.FactoryBean<org.osgi.framework.Bundle>public boolean isSingleton()
isSingleton in interface org.springframework.beans.factory.FactoryBean<org.osgi.framework.Bundle>public org.osgi.framework.Bundle getObject()
throws java.lang.Exception
getObject in interface org.springframework.beans.factory.FactoryBean<org.osgi.framework.Bundle>java.lang.Exceptionpublic void afterPropertiesSet()
throws java.lang.Exception
afterPropertiesSet in interface org.springframework.beans.factory.InitializingBeanjava.lang.Exceptionpublic void destroy()
throws java.lang.Exception
destroy in interface org.springframework.beans.factory.DisposableBeanjava.lang.Exceptionprotected void executeAction(BundleActionEnum action)
private org.osgi.framework.Bundle installBundle()
throws org.osgi.framework.BundleException
org.osgi.framework.BundleExceptionprivate org.osgi.framework.Bundle findBundle()
public org.springframework.core.io.Resource getResource()
Resource object (if a ResourceLoader is available) from the given location (if any).Resource object for the given locationpublic java.lang.String getLocation()
public void setLocation(java.lang.String url)
url - bundle location (normally an URL or a Spring Resource)public java.lang.String getSymbolicName()
public void setSymbolicName(java.lang.String symbolicName)
symbolicName - bundle symbolic namepublic void setBundleContext(org.osgi.framework.BundleContext context)
BundleContextAwareBundleContext that this bean runs in. Normally this can
be used to initialize an object.setBundleContext in interface BundleContextAwarecontext - the BundleContext object to be used
by this objectpublic BundleAction getAction()
getBundleAction()public BundleActionEnum getBundleAction()
public void setAction(BundleAction action)
#setBundleAction(BundleAction)action - action to execute at startuppublic void setBundleAction(BundleActionEnum action)
action - action to execute at startuppublic BundleAction getDestroyAction()
getBundleDestroyAction()public BundleActionEnum getBundleDestroyAction()
public void setDestroyAction(BundleAction action)
setBundleDestroyAction(BundleActionEnum)action - action to execute at shutdownpublic void setBundleDestroyAction(BundleActionEnum action)
action - action to execute at shutdownpublic int getStartLevel()
public void setStartLevel(int startLevel)
startLevel - bundle start level.public void setPushBundleAsContextClassLoader(boolean pushBundleAsContextClassLoader)
false.pushBundleAsContextClassLoader - true if the thread context class loader will be set to the target bundle or
false otherwisepublic void setClassLoader(java.lang.ClassLoader classloader)
public void setResourceLoader(org.springframework.core.io.ResourceLoader resourceLoader)
setResourceLoader in interface org.springframework.context.ResourceLoaderAwareprivate void updateStartLevel(int level)
public org.osgi.framework.Bundle getBundle()
public void setBundle(org.osgi.framework.Bundle bundle)
bundle - The bundle to set