4.6 Programmatic Access to the Servlet Context

This section describes how to programmatically access the servlet context to obtain the WebApplicationContext or the BundleContext.

Programmatic Access to Web Features

Programmatic Access to the WebApplicationContext

The Virgo Server for Apache Tomcat automatically creates a WebApplicationContext
for Web Application Bundles and WAR files. When used in conjunction with an
an auto-configured Spring MVC DispatcherServlet,
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. However, if you wish to access the WebApplicationContext
you can do so via the web application’s ServletContext.
Virgo stores the bundle’s
WebApplicationContext in the ServletContext under
the attribute name "BSN-ApplicationContext", where
BSN is the Bundle-SymbolicName
of your WAR or Web Application Bundle.

Alternatively, since Virgo 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.

Programmatic Access to the BundleContext

As required by the OSGi Web Applications specification, you can access the
BundleContext of your WAR or Web Application Bundle via the web application’s
ServletContext. The bundle context is stored in the
ServletContext under the attribute name osgi-bundlecontext.