Class RedeployableActionServlet
- All Implemented Interfaces:
Servlet
,ServletConfig
,Serializable
WebLogic (at least v6 and v7) attempts to serialize the TilesRequestProcessor when re-deploying the Webapp in development mode. The TilesRequestProcessor is not serializable, and loses the Tiles definitions. This results in NullPointerException and/or NotSerializableException when using the app after automatic redeploy.
This bug report proposes a workaround for this problem, in the hope it will help others and maybe motivate an actual fix.
The attached class extends the Struts Action servlet and fixes the problem by reloading the Tiles definitions when they have disappeared.
For background discussion see http://issues.apache.org/bugzilla/show_bug.cgi?id=26322
- Since:
- 1.2.1
- Version:
- $Rev$ $Date$
- See Also:
-
Field Summary
Fields inherited from class org.apache.struts.action.ActionServlet
chainConfig, config, configDigester, convertNull, internal, internalName, registrations, servletMapping, servletName
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected RequestProcessor
getRequestProcessor
(ModuleConfig config) Look up and return theRequestProcessor
responsible for the specified module, creating a new one if necessary.Methods inherited from class org.apache.struts.action.ActionServlet
addServletMapping, destroy, destroyConfigDigester, destroyInternal, destroyModules, doGet, doPost, getInternal, getModuleConfig, init, initChain, initConfigDigester, initInternal, initModuleActions, initModuleConfig, initModuleConfigFactory, initModuleExceptionConfigs, initModuleFormBeans, initModuleForwards, initModuleMessageResources, initModulePlugIns, initModulePrefixes, initOther, initServlet, parseModuleConfigFile, parseModuleConfigFile, process, processActionConfigClass, processActionConfigExtension, processExceptionConfigClass, processExceptionExtension, processFormBeanConfigClass, processFormBeanExtension, processForwardConfigClass, processForwardExtension, splitAndResolvePaths
Methods inherited from class jakarta.servlet.http.HttpServlet
doDelete, doHead, doOptions, doPut, doTrace, getLastModified, service, service
Methods inherited from class jakarta.servlet.GenericServlet
getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log
-
Constructor Details
-
RedeployableActionServlet
public RedeployableActionServlet()
-
-
Method Details
-
getRequestProcessor
Description copied from class:ActionServlet
Look up and return the
RequestProcessor
responsible for the specified module, creating a new one if necessary.- Overrides:
getRequestProcessor
in classActionServlet
- Parameters:
config
- The module configuration for which to acquire and return a RequestProcessor.- Returns:
- The
RequestProcessor
responsible for the specified module, - Throws:
ServletException
- If we cannot instantiate a RequestProcessor instance aUnavailableException
is thrown, meaning your application is not loaded and will not be available.
-