4.6 Programmatic Access to the Servlet Context
Prev | 4. Developing Applications | Next

## 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`.

Prev | Up | Next
4.5 Using Spring, Spring DM, and Blueprint | Home | 4.7 Web Application Manifest Processing