Under the heading "A step in the right direction", how about if we (meaning I) were to start with defining a simple "ActionResources" class that encapsulated everything that is now available under a Action.*_KEY. This comes down to:
public interface ActionResources { public void setResourceRequest(HttpServletRequest request); public DataSource getDataSource(); public ActionErrors getActionErrors(); public Throwable getException(); public ActionFormBeans getActionFormBeans(); public ActionForwards getActionForwards(); public Locale getLocale(); public ActionMappings getActionMappings(); public MessageResources getMessageResouces(); public DiskMultipartRequestHandler getMultipartHandler(); public ActionServlet getActionServlet(); public Servlet getServlet(); public String getToken(); public ActionForm getActionForm(String name); public ActionForward getActionForward(String name); public ActionMapping getActionMapping(String name); public ActionMapping getCurrentMapping(); public ActionForm getCurrentActionForm(); } This could then be instantiated using the request ActionResourcesBase shared = new ActionResourcesBase(request); and passed in the request. . We could then start refactoring things to look for this bean instead. Initially ,it would mostly be looking things up under their key in the context. But at some point, a different implementation of ActionResources could get them from someplace else entirely. Here's a question: Does multiple ActionServlets mean multiple Actions? Or should there still be one Action class implementation per application, with all the ActionServlets drinking from the same well? Do any multi-threading wizards out there have an opinion on http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2214 The code looks fine, but I'd be glad for a second on committing this. (Developer votes welcome.) -- Ted Husted, Husted dot Com, Fairport NY USA. -- Custom Software ~ Technical Services. -- Tel +1 716 737-3463 -- http://www.husted.com/struts/ -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>