Module personalities typically provide automatic access to features specific to the personality via custom manifest headers or other configuration mechanisms. There may be situations, however, for which programmatic access to such features is desirable or necessary. This section describes how to programmatically access personality-specific features from application code in a module.
The SpringSource dm Server automatically creates a WebApplicationContext
for Web Modules and appropriately configured Shared Services WARs which
have Spring-DM powered ApplicationContext
XML configuration files.
For Web Modules in particular, a WebApplicationContext
will be created which is typically used in conjunction with
an auto-configured Spring MVC DispatcherServlet
.
In such scenarios, there is generally no need to access the
WebApplicationContext
programmatically,
since all components of the web application are configured
within the scope of the WebApplicationContext
itself. For Shared Services WARs, or for Web Modules which do
not directly rely on Spring MVC, you can alternatively access
the Spring-DM powered WebApplicationContext
via the web application's ServletContext
.
The Web Personality subsystem stores the bundle's
WebApplicationContext
in the ServletContext under
the attribute name "BSN-ApplicationContext
", where
BSN
is the Bundle-SymbolicName
of your Shared Services WAR or Web Module. Thus, for a Web Module,
you can use Spring MVC's WebApplicationContextUtils'
getWebApplicationContext(servletContext, attributeName)
method (or other means) to programmatically retrieve a reference to the
WebApplicationContext
, which is an instance
of ServerOsgiBundleXmlWebApplicationContext
.
For Shared Services WARs, you can programmatically retrieve
the WebApplicationContext
directly from the
ServletContext.
Alternatively, since the Web Personality subsystem also stores the
WebApplicationContext
under the attribute name
with the value of the WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE
constant, you may choose to use Spring MVC's WebApplicationContextUtils'
getWebApplicationContext(servletContext)
or
getRequiredWebApplicationContext(servletContext)
methods to access the WebApplicationContext
without providing
an explicit attribute name.
Similar to programmatic access to the ApplicationContext
as described above, you can access the BundleContext
of your Shared Services WAR or Web Module via the web application's
ServletContext
. The Web Personality subsystem
stores the bundle context under the attribute name with the value of the
ServerOsgiBundleXmlWebApplicationContext.BUNDLE_CONTEXT_ATTRIBUTE
constant.
Note | |
---|---|
|