Package com.opencms.flex

Provides the JSP funtionality for OpenCms, with some additional utility functions.

See:
          Description

Interface Summary
I_CmsEventListener Implement this interface in case your class has to react to CmsEvents that are thrown by system.
I_CmsResourceLoader This interface describes a resource loader for OpenCms, a class that can load a resource from the VFS, process it's contents and deliver the result to the user.
 

Class Summary
CmsDumpLoader Dump loader for binary or other unprocessed resource types.
CmsEvent Event class for OpenCms for system wide events that are thrown by various operations (e.g. publishing) and can be catched and processed by classes that implement the I_CmsEventListener interface.
CmsJspLoader The JSP loader which enables the execution of JSP in OpenCms.
CmsJspTemplate A simple dump class for JSPs which enables the use of JSP as sub-elements in the legacy OpenCms XMLTemplate mechanism.
CmsXmlTemplateLoader Implementation of the I_CmsResourceLoader and the I_CmsLauncher interface for XMLTemplates.
 

Package com.opencms.flex Description

Provides the JSP funtionality for OpenCms, with some additional utility functions.

How the JSP integration is done:

The issue for JSP integration was this: In OpenCms all resources are residing in the OpenCms Database, the so called "Virtual File System" or VFS. However, all JSP engines available read the JSP code from a file in the local file system. The option to re-write a JSP engine so that it can read from the VFS would limit OpenCms to running with this JSP engine only, which was not a choice. So the approach that was taken is to dump the contents of the OpenCms JSP page from the VFS to the "real" file system and then dispatch to the standard JSP engine.

Here is a top-level description of how this works:

  1. OpenCms gets the request through the OpenCmsHttpServlet
  2. The requested resource is identified as a JSP page (resource type CmsResourceTypeJsp)
  3. The JSP launcher is started up with the laucher manager CmsLauncherManager
  4. The JSP launcher implements an additional interface: I_CmsResourceLoader
  5. A resource loader is a new interface that was introduced with the FLEX release. The main difference is that the original request / response is wrapped using a Servlet standard HttpServletRequestWrapper / HttpServletResponseWrapper.
  6. On the first call to a page, the file contents of the JSP page are read from the OpenCms VFS using the CmsObject
  7. The contents of the page are written to the "real" file system of the server, in the default configuration to the directories {WEBAPP-PATH}/opencms/WEB-INF/jsp/online or {WEBAPP-PATH}/opencms/WEB-INF/jsp/offline (depending if the request was for the online or the offline version of the page). The directory used can be configured in opencms.properties.
  8. After the page is written to the "real" FS, the loader dispatches to the standard JSP mechanism with a simple include() call, this happens in com.opencms.flex.CmsJspLoader#service(CmsObject cms, CmsResource file, CmsFlexRequest req, CmsFlexResponse res).
  9. The standard JSP mechanim will handle the JSP and deliver the output through the wrapped request / response back to OpenCms.
  10. OpenCms will then deliver the contents back to the user.
Note: The FLEX package was originally developed to add only JSP functionality to OpenCms, but has since then grown to include other methods and functionality.

Since:
FLEX alpha 1
See Also:
OpenCmsHttpServlet, CmsLauncherManager, CmsObject, CmsResourceTypeJsp, CmsJspLoader, CmsFlexRequestDispatcher, CmsFlexRequest, CmsFlexResponse