Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| The Spring Framework
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.springframework.web.struts
Class ContextLoaderPlugIn

    java.lang.Object
      org.springframework.web.struts.ContextLoaderPlugIn

All Implemented Interfaces:
  PlugIn

    public class ContextLoaderPlugIn

extends Object
implements PlugIn

Struts 1.1+ PlugIn that loads a Spring application context for the Struts ActionServlet. This context will automatically refer to the root WebApplicationContext (loaded by ContextLoaderListener/Servlet) as parent.

The default namespace of the WebApplicationContext is the name of the Struts ActionServlet, suffixed with "-servlet" (e.g. "action-servlet"). The default location of the XmlWebApplicationContext configuration file is therefore "/WEB-INF/action-servlet.xml".

     <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"/>

The location of the context configuration files can be customized through the "contextConfigLocation" setting, analogous to the root WebApplicationContext and FrameworkServlet contexts.

     <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
       <set-property property="contextConfigLocation" value="/WEB-INF/action-servlet.xml /WEB-INF/myContext.xml"/>
     </plug-in>

Beans defined in the ContextLoaderPlugIn context can be accessed from conventional Struts Actions, via fetching the WebApplicationContext reference from the ServletContext. ActionSupport and DispatchActionSupport are pre-built convenience classes that provide easy access to the context.

It is normally preferable to access Spring's root WebApplicationContext in such scenarios, though: A shared middle tier should be defined there rather than in a ContextLoaderPlugin context, for access by any web component. ActionSupport and DispatchActionSupport autodetect the root context too.

A special usage of this PlugIn is to define Struts Actions themselves as beans, typically wiring them with middle tier components defined in the root context. Such Actions will then be delegated to by proxy definitions in the Struts configuration, using the DelegatingActionProxy class or the DelegatingRequestProcessor.

Note that you can use a single ContextLoaderPlugIn for all Struts modules. That context can in turn be loaded from multiple XML files, for example split according to Struts modules. Alternatively, define one ContextLoaderPlugIn per Struts module, specifying appropriate "contextConfigLocation" parameters.

Note: The idea of delegating to Spring-managed Struts Actions originated in Don Brown's Spring Struts Plugin. ContextLoaderPlugIn and DelegatingActionProxy constitute a clean-room implementation of the same idea, essentially superseding the original plugin. Many thanks to Don Brown and Matt Raible for the original work and for the agreement to reimplement the idea in Spring proper!

Since:
  1.0.1
Author:
  Juergen Hoeller
See Also:
  `SERVLET_CONTEXT_PREFIX`, `ActionSupport`, `DispatchActionSupport`, `DelegatingActionProxy`, `DelegatingRequestProcessor`, `DelegatingTilesRequestProcessor`, `ContextLoaderListener`, `ContextLoaderServlet`, `FrameworkServlet`

Field Summary
`static Class` | `DEFAULT_CONTEXT_CLASS` Default context class for ContextLoaderPlugIn.
`static String` | `DEFAULT_NAMESPACE_SUFFIX` Suffix for WebApplicationContext namespaces.
`protected Log` | `logger`
`static String` | `SERVLET_CONTEXT_PREFIX` Prefix for the ServletContext attribute for the WebApplicationContext.

Constructor Summary
`ContextLoaderPlugIn()`

Method Summary
`protected WebApplicationContext` | `createWebApplicationContext(WebApplicationContext parent)` Instantiate the WebApplicationContext for the ActionServlet, either a default XmlWebApplicationContext or a custom context class if set.
`void` | `destroy()` Close the WebApplicationContext of the ActionServlet.
`ActionServlet` | `getActionServlet()` Return the Struts ActionServlet that this PlugIn is associated with.
`Class` | `getContextClass()` Return the custom context class.
`String` | `getContextConfigLocation()` Return the explicit context config location, if any.
`ModuleConfig` | `getModuleConfig()` Return the Struts ModuleConfig that this PlugIn is associated with.
`String` | `getModulePrefix()` Return the prefix of the ModuleConfig that this PlugIn is associated with.
`String` | `getNamespace()` Return the namespace for the ActionServlet, falling back to default scheme if no custom namespace was set: e.g.
`ServletContext` | `getServletContext()` Return the ServletContext that this PlugIn is associated with.
`String` | `getServletContextAttributeName()` Return the ServletContext attribute name for this PlugIn's WebApplicationContext.
`String` | `getServletName()` Return the name of the ActionServlet that this PlugIn is associated with.
`WebApplicationContext` | `getWebApplicationContext()` Return this PlugIn's WebApplicationContext.
`void` | `init(ActionServlet actionServlet, ModuleConfig moduleConfig)` Create the ActionServlet's WebApplicationContext.
`protected WebApplicationContext` | `initWebApplicationContext()` Initialize and publish the WebApplicationContext for the ActionServlet.
`protected void` | `onInit()` Callback for custom initialization after the context has been set up.
`void` | `setContextClass(Class contextClass)` Set a custom context class.
`void` | `setContextClassName(String contextClassName)` Set a custom context class by name.
`void` | `setContextConfigLocation(String contextConfigLocation)` Set the context config location explicitly, instead of relying on the default location built from the namespace.
`void` | `setNamespace(String namespace)` Set a custom namespace for the ActionServlet, to be used for building a default context config location.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### DEFAULT_NAMESPACE_SUFFIX

    public static final String DEFAULT_NAMESPACE_SUFFIX

  Suffix for WebApplicationContext namespaces. If a Struts ActionServlet is given the name "action" in a context, the namespace used by this PlugIn will resolve to "action-servlet".

  See Also:
    Constant Field Values

### DEFAULT_CONTEXT_CLASS

    public static final Class DEFAULT_CONTEXT_CLASS

  Default context class for ContextLoaderPlugIn.

  See Also:
    `XmlWebApplicationContext`

### SERVLET_CONTEXT_PREFIX

    public static final String SERVLET_CONTEXT_PREFIX

  Prefix for the ServletContext attribute for the WebApplicationContext. The completion is the Struts module name.

### logger

    protected final Log logger

Constructor Detail

### ContextLoaderPlugIn

    public ContextLoaderPlugIn()

Method Detail

### setContextClassName

    public void setContextClassName(String contextClassName)
                             throws ClassNotFoundException

  Set a custom context class by name. This class must be of type WebApplicationContext, when using the default ContextLoaderPlugIn implementation, the context class must also implement ConfigurableWebApplicationContext.

  Throws:
    `ClassNotFoundException`
  See Also:
    `createWebApplicationContext(org.springframework.web.context.WebApplicationContext)`

### setContextClass

    public void setContextClass(Class contextClass)

  Set a custom context class. This class must be of type WebApplicationContext, when using the default ContextLoaderPlugIn implementation, the context class must also implement ConfigurableWebApplicationContext.

  See Also:
    `createWebApplicationContext(org.springframework.web.context.WebApplicationContext)`

### getContextClass

    public Class getContextClass()

  Return the custom context class.

### setNamespace

    public void setNamespace(String namespace)

  Set a custom namespace for the ActionServlet, to be used for building a default context config location.

### getNamespace

    public String getNamespace()

  Return the namespace for the ActionServlet, falling back to default scheme if no custom namespace was set: e.g. "test-servlet" for a servlet named "test".

### setContextConfigLocation

    public void setContextConfigLocation(String contextConfigLocation)

  Set the context config location explicitly, instead of relying on the default location built from the namespace. This location string can consist of multiple locations separated by any number of commas and spaces.

### getContextConfigLocation

    public String getContextConfigLocation()

  Return the explicit context config location, if any.

### init

    public final void init(ActionServlet actionServlet,
                           ModuleConfig moduleConfig)
                    throws ServletException

  Create the ActionServlet's WebApplicationContext.

  Specified by:
    `init` in interface `PlugIn`
  Throws:
    `ServletException`

### getActionServlet

    public final ActionServlet getActionServlet()

  Return the Struts ActionServlet that this PlugIn is associated with.

### getServletName

    public final String getServletName()

  Return the name of the ActionServlet that this PlugIn is associated with.

### getServletContext

    public final ServletContext getServletContext()

  Return the ServletContext that this PlugIn is associated with.

### getModuleConfig

    public final ModuleConfig getModuleConfig()

  Return the Struts ModuleConfig that this PlugIn is associated with.

### getModulePrefix

    public final String getModulePrefix()

  Return the prefix of the ModuleConfig that this PlugIn is associated with.

  See Also:
    `ModuleConfig.getPrefix()`

### initWebApplicationContext

    protected WebApplicationContext initWebApplicationContext()
                                                       throws BeansException,
                                                              IllegalStateException

  Initialize and publish the WebApplicationContext for the ActionServlet.

  Delegates to `createWebApplicationContext(org.springframework.web.context.WebApplicationContext)` for actual creation.

  Can be overridden in subclasses. Call `getActionServlet()` and/or `getModuleConfig()` to access the Struts configuration that this PlugIn is associated with.

  Throws:
    `BeansException` - if the context couldn't be initialized
    `IllegalStateException` - if there is already a context for the Struts ActionServlet
  See Also:
    `getActionServlet()`, `getServletName()`, `getServletContext()`, `getModuleConfig()`, `getModulePrefix()`

### createWebApplicationContext

    protected WebApplicationContext createWebApplicationContext(WebApplicationContext parent)
                                                         throws BeansException

  Instantiate the WebApplicationContext for the ActionServlet, either a default XmlWebApplicationContext or a custom context class if set.

  This implementation expects custom contexts to implement ConfigurableWebApplicationContext. Can be overridden in subclasses.

  Throws:
    `BeansException` - if the context couldn't be initialized
  See Also:
    `setContextClass(java.lang.Class)`, `XmlWebApplicationContext`

### getServletContextAttributeName

    public String getServletContextAttributeName()

  Return the ServletContext attribute name for this PlugIn's WebApplicationContext.

  The default implementation returns SERVLET_CONTEXT_PREFIX + module prefix.

  See Also:
    `SERVLET_CONTEXT_PREFIX`, `getModulePrefix()`

### getWebApplicationContext

    public final WebApplicationContext getWebApplicationContext()

  Return this PlugIn's WebApplicationContext.

### onInit

    protected void onInit()
                   throws ServletException

  Callback for custom initialization after the context has been set up.

  Throws:
    `ServletException` - if initialization failed

### destroy

    public void destroy()

  Close the WebApplicationContext of the ActionServlet.

  Specified by:
    `destroy` in interface `PlugIn`
  See Also:
    `ConfigurableApplicationContext.close()`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| The Spring Framework
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2002-2008 The Spring Framework.