org.springframework.web.struts
Class ContextLoaderPlugIn

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

Deprecated. as of Spring 3.0

@Deprecated
public class ContextLoaderPlugIn
extends java.lang.Object

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, org.springframework.web.context.ContextLoaderServlet, FrameworkServlet

Field Summary
private  ActionServlet actionServlet
          Deprecated. The Struts ActionServlet that this PlugIn is registered with
private  java.lang.Class contextClass
          Deprecated. Custom WebApplicationContext class
private  java.lang.String contextConfigLocation
          Deprecated. Explicit context config location
static java.lang.Class DEFAULT_CONTEXT_CLASS
          Deprecated. Default context class for ContextLoaderPlugIn.
static java.lang.String DEFAULT_NAMESPACE_SUFFIX
          Deprecated. Suffix for WebApplicationContext namespaces.
protected  Log logger
          Deprecated.  
private  ModuleConfig moduleConfig
          Deprecated. The Struts ModuleConfig that this PlugIn is registered with
private  java.lang.String namespace
          Deprecated. Namespace for this servlet
static java.lang.String SERVLET_CONTEXT_PREFIX
          Deprecated. Prefix for the ServletContext attribute for the WebApplicationContext.
private  WebApplicationContext webApplicationContext
          Deprecated. WebApplicationContext for the ActionServlet
 
Constructor Summary
ContextLoaderPlugIn()
          Deprecated.  
 
Method Summary
protected  WebApplicationContext createWebApplicationContext(WebApplicationContext parent)
          Deprecated. Instantiate the WebApplicationContext for the ActionServlet, either a default XmlWebApplicationContext or a custom context class if set.
 void destroy()
          Deprecated. Close the WebApplicationContext of the ActionServlet.
 ActionServlet getActionServlet()
          Deprecated. Return the Struts ActionServlet that this PlugIn is associated with.
 java.lang.Class getContextClass()
          Deprecated. Return the custom context class.
 java.lang.String getContextConfigLocation()
          Deprecated. Return the explicit context config location, if any.
 ModuleConfig getModuleConfig()
          Deprecated. Return the Struts ModuleConfig that this PlugIn is associated with.
 java.lang.String getModulePrefix()
          Deprecated. Return the prefix of the ModuleConfig that this PlugIn is associated with.
 java.lang.String getNamespace()
          Deprecated. Return the namespace for the ActionServlet, falling back to default scheme if no custom namespace was set: e.g.
 ServletContext getServletContext()
          Deprecated. Return the ServletContext that this PlugIn is associated with.
 java.lang.String getServletContextAttributeName()
          Deprecated. Return the ServletContext attribute name for this PlugIn's WebApplicationContext.
 java.lang.String getServletName()
          Deprecated. Return the name of the ActionServlet that this PlugIn is associated with.
 WebApplicationContext getWebApplicationContext()
          Deprecated. Return this PlugIn's WebApplicationContext.
 void init(ActionServlet actionServlet, ModuleConfig moduleConfig)
          Deprecated. Create the ActionServlet's WebApplicationContext.
protected  WebApplicationContext initWebApplicationContext()
          Deprecated. Initialize and publish the WebApplicationContext for the ActionServlet.
protected  void onInit()
          Deprecated. Callback for custom initialization after the context has been set up.
 void setContextClass(java.lang.Class contextClass)
          Deprecated. Set a custom context class.
 void setContextClassName(java.lang.String contextClassName)
          Deprecated. Set a custom context class by name.
 void setContextConfigLocation(java.lang.String contextConfigLocation)
          Deprecated. Set the context config location explicitly, instead of relying on the default location built from the namespace.
 void setNamespace(java.lang.String namespace)
          Deprecated. 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 java.lang.String DEFAULT_NAMESPACE_SUFFIX
Deprecated. 
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 java.lang.Class DEFAULT_CONTEXT_CLASS
Deprecated. 
Default context class for ContextLoaderPlugIn.

See Also:
XmlWebApplicationContext

SERVLET_CONTEXT_PREFIX

public static final java.lang.String SERVLET_CONTEXT_PREFIX
Deprecated. 
Prefix for the ServletContext attribute for the WebApplicationContext. The completion is the Struts module name.


logger

protected final Log logger
Deprecated. 

contextClass

private java.lang.Class contextClass
Deprecated. 
Custom WebApplicationContext class


namespace

private java.lang.String namespace
Deprecated. 
Namespace for this servlet


contextConfigLocation

private java.lang.String contextConfigLocation
Deprecated. 
Explicit context config location


actionServlet

private ActionServlet actionServlet
Deprecated. 
The Struts ActionServlet that this PlugIn is registered with


moduleConfig

private ModuleConfig moduleConfig
Deprecated. 
The Struts ModuleConfig that this PlugIn is registered with


webApplicationContext

private WebApplicationContext webApplicationContext
Deprecated. 
WebApplicationContext for the ActionServlet

Constructor Detail

ContextLoaderPlugIn

public ContextLoaderPlugIn()
Deprecated. 
Method Detail

setContextClassName

public void setContextClassName(java.lang.String contextClassName)
                         throws java.lang.ClassNotFoundException
Deprecated. 
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:
java.lang.ClassNotFoundException
See Also:
createWebApplicationContext(org.springframework.web.context.WebApplicationContext)

setContextClass

public void setContextClass(java.lang.Class contextClass)
Deprecated. 
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 java.lang.Class getContextClass()
Deprecated. 
Return the custom context class.


setNamespace

public void setNamespace(java.lang.String namespace)
Deprecated. 
Set a custom namespace for the ActionServlet, to be used for building a default context config location.


getNamespace

public java.lang.String getNamespace()
Deprecated. 
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(java.lang.String contextConfigLocation)
Deprecated. 
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 java.lang.String getContextConfigLocation()
Deprecated. 
Return the explicit context config location, if any.


init

public final void init(ActionServlet actionServlet,
                       ModuleConfig moduleConfig)
                throws ServletException
Deprecated. 
Create the ActionServlet's WebApplicationContext.

Throws:
ServletException

getActionServlet

public final ActionServlet getActionServlet()
Deprecated. 
Return the Struts ActionServlet that this PlugIn is associated with.


getServletName

public final java.lang.String getServletName()
Deprecated. 
Return the name of the ActionServlet that this PlugIn is associated with.


getServletContext

public final ServletContext getServletContext()
Deprecated. 
Return the ServletContext that this PlugIn is associated with.


getModuleConfig

public final ModuleConfig getModuleConfig()
Deprecated. 
Return the Struts ModuleConfig that this PlugIn is associated with.


getModulePrefix

public final java.lang.String getModulePrefix()
Deprecated. 
Return the prefix of the ModuleConfig that this PlugIn is associated with.

See Also:
org.apache.struts.config.ModuleConfig#getPrefix

initWebApplicationContext

protected WebApplicationContext initWebApplicationContext()
                                                   throws BeansException,
                                                          java.lang.IllegalStateException
Deprecated. 
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
java.lang.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
Deprecated. 
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 java.lang.String getServletContextAttributeName()
Deprecated. 
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()
Deprecated. 
Return this PlugIn's WebApplicationContext.


onInit

protected void onInit()
               throws ServletException
Deprecated. 
Callback for custom initialization after the context has been set up.

Throws:
ServletException - if initialization failed

destroy

public void destroy()
Deprecated. 
Close the WebApplicationContext of the ActionServlet.

See Also:
ConfigurableApplicationContext.close()