This proposal will most likely be superceded by the Ti proposal and the release of Struts Action 2.0, but should be retained for future reference.


Jericho is a whiteboard proposal describing one possible implementation of Struts 2.x. Since Struts 2.x is slated as a "revolution", the Apache practice is to assign a codename to a proposal until the Community comes to a consensus. This proposal is called "Jericho" since it tries to tear-down the walls within the Struts architecture.

General Description, Thoughts & Ideas

Jericho proposes to open-up Struts by:

Backward compatibility

Jericho is a revolution and backward compatibility with prior versions of Struts is not the prime consideration. However, care is being taken to create a clear migration path, where practical, so that Jericho is available to the widest community possible.

Taglibs/Tools

JSP taglibs and other presentation tools will be packaged separately from the core controller classes. Tags and tools can access the framework through a StrutsContext object passed through the request, rather than searching through the servlet or portlet contexts.

ActionForms/Actions, et al

New implementations of Struts 1.x base classes will be provided. These classes will provide the Struts 1.x behavior, but will also implement the Jericho interfaces. (Much the same way perform was supported in Struts 1.1.)

These same techniques may be applied to provide adaptors for other frameworks, so as to make Struts Jericho available to the widest community possible.

Configuration

The Jericho Configuration builds on the best aspects of Struts 1.2. The elements are different but still similar. Our goal is to allow a tool, such as a XLST processor, to migrate a Struts 1.2 DTD to Struts Jericho.

A second alternative might be to provide an alternate configuration loader that would map the Struts 1.2 elements to Struts Jericho objects at initialization.

Servlet/Portlet/Soap/Mock support

Core components will implement signatures that reference a StrutsContext. Implementations of this interface can be backed by servlet, portlet, soap, or mock implementations as needed.

Also under consideration

Component Overview

Configuration registry

Command Context

Request Adapter (servlet module, portlet, SOAP, mock)

Controller

Processor

ExceptionHandler

Tags/Tools

Server Pages

StrutsJericho (last edited 2009-09-20 23:11:42 by localhost)