<?xml version="1.0"?>
<!--
Copyright 2004 The Apache Software Foundation

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<document>
  <properties>
    <title>Struts Bridge Summary</title>
    <authors>
      <person name="Ate Douma" email="ate@douma.nu"/>
    </authors>
  </properties>
  <body>
    <section name="Summary">
      <p>
        The Struts Bridge allows <a href="http://struts.apache.org">Struts</a> and Struts Tiles applications to be run
        as <a href="http://www.jcp.org/en/jsr/detail?id=168">JSR-168</a> compliant Portlets.
      </p>
      <p>
        Existing or new Struts Applications can be transparently deployed as Portlet Application or
        Web Application.<br/>
        The Bridge wraps and enhances the native Struts Framework to overcome its limitations and
        incompatibilities with the Java Portlet Standard requirements.
      </p>
      <p>
        An existing Struts Application can be used as a Portlet <em>without</em> changes to the code or JSP files if:
        <ul>
          <li>a few common sense rules, based on a proper MVC architecture, are followed for the Struts Action configurations</li>
          <li>Struts Tags are used for rendering all resource paths (like images) and action links</li>
        </ul>
      </p>
      <p>
        If a Struts Portlet doesn't use Portlet specific features, it can also be accessed and used as Web Application at
        the same time. Even testing the Struts Application can then be done completely independent of a Portal.
      </p>
      <p>
        The Struts Bridge is developed to be independent from specific Portals and uses only a very small interface to
        the Portal to be able to get access to the Servlet environment at runtime. As all JSR-168 Portlet Containers are
        required to build upon the Servlet specification, providing this interface for a specific Portal is usually very
        easy to do, if not done already.
      </p>
      <p>
        The Apache Portals <a href="http://portals.apache.org/jetspeed-2">Jetspeed-2 Portal</a> provides this interface
        natively, as well as example Struts Portlet Applications using the Struts Bridge like a JPetstore Portlet. 
      </p>
    </section>
  </body>
</document>