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.