Chrysalis has the following design goals:
- To provide a framework for Java web development supporting
data-entry-oriented business applications.
- To function on any server supporting the Servlet 2.2/JSP 1.1
- To be simple. The core of the Chrysalis system should take at
most 10 pages of explanation (the
Chrysalis Quick Start).
- To facilitate "out of container" unit testing for
Chrysalis has some secondary goals supporting its design
- Chrysalis should limit the design decisions that developers
have to make. For a given task, there should be only one way to do
- Chrysalis should be modular, so that special features
(internationalization, security) can be used or ignored, depending
on development needs.
Chrysalis has the following "non-goals":
- Chrysalis is not intended to be a general purpose framework.
You could not build something like Axis, Cocoon or a portal site
- Chrysalis does not address data system access; some other
technology (EJB, JDO, JDBC, Hibernate) must be used to access
enterprise data systems. These data access technologies will be
responsible for issues like connection pooling, data caching and so
Chrysalis and Other Web Frameworks
There are already dozens of Java web development frameworks
available. A number of these frameworks are popular, well-tested
and successful. Why have we created another one?
Chrysalis has support for the most popular features of modern
Servlet/JSP web frameworks:
Modern, View, Controller.
Automatic Bean Updates, from request data.
Simplified View Generation, via
Configurable View Redirection.
Request Interception, using standard
Page Templates, defining common page layout.
Security, integrated with the container or custom
Internationalization, for client-side validation, server
side validation, view generation, bean attributes and error
We feel that Chrysalis has a number of nice features missing
from other frameworks. Here are a few of the features of Chrysalis
that we distinguish it from existing frameworks.
Stateful Controllers: Chrysalis controllers have
multiple methods, and can maintain state on behalf of application
clients. This reduces or eliminates the need to interact with the
servlet session, and make it easier to group common controller
logic into individual classes.
Hierarchical Configuration: Chrysalis uses a
hierarchical configuration mechanism, allowing configuration value
to defined at the class/page level, package/directory level or
Sophisticated Client-Side Validation: Chrysalis uses a
library. This library is independant of the general Chrysalis
Support for Modern Standards on Older Containers:
Chrysalis has partial support from some of the nicer features of
the modern Servlet/JSP API (filters, JSTL Expression Language) with
an implementation that will function on Servlet 2.2/JSP 1.1
Out-of-Container Testing: Chrysalis controllers are
designed to easily support of out-of-container testing, so that you
can write unit tests for your controllers that will function
outside the Servlet engine. Chrysalis is not unique here (some
other frameworks also support out-of-container testing). This
feature is sufficiently uncommon, however, that we feel justified
in claiming it as a distinguishing feature.