www.sjwaller.com

Portfolio

Archaeology Data Service: RedsquidDecember 1st, 2009

This project was a major ongoing task at the ADS during 2009. My goal was to bring together our disparate set of web resources and systems into a fresh modern enterprise SOA architecture.

  • Dates: January, 2009 – December, 2009
  • Technology: Java EE 5, EJB 3.0, JPA, JSF, JQuery, UDDI and Web Services
  • Responsibility: Architecting and building the infrastructure

Overview

The Redsquid framework was a Java Enterprise framework that bound together a number of web applications and modules. The core Redsquid application was responsible for rendering the front page content, static wiki content, user management, sitemap and the myAds utilities. Several Redsquid modules were also developed to provide functionality for other sections of the website including Archsearch, Archives and the CMS 2.0. These modules were all built from a JSF/JSP template reference application.

JSPWiki

The JSPWiki engine was used to provide wiki-based management of the static content of the webiste. The two classes providing the core support for use within Redsquid were as follows:

  • WikiController – an Application scope bean that contains the JSPWiki engine. Responsible for parsing, saving, deleting, attaching wiki content.
  • WikiPageBean – a backing-bean to hold information relating to current page (section, subsection, page, title, content, author)

Apcahe SOLR

Apache SOLR was used to provide faceted classification indexing for various elements used within Redsquid including Site Search, Archsearch and Archives.

Open Blue Dragon

The Open Blue Dragon engine was embedded to provide the rendering ability for ADS ColdFusion based Special Collection interfaces.

Redsquid EJBs

  • UserManagerEJB – responsible for maintaining user sessions, creating/updating user details and logging user events.
  • FrameworkEJB – responsible for rendering top / tail elements of a Redsquid webapp and managing the Redsquid Sitemap.

Redsquid Components

JSF/JSP taglib to communicate with EJB’s from within modules. The current set of tags are as follows:

  • Banner
  • Footer
  • Menu
  • Submenu

Utility tags:

  • RSS

Redsquid Filters

  • SSOFilter – binds a web application to the Redsquid system as follows:
    1. Query the UserManagerEJB and determine the current logged in user based on SSOSESSIONID cookie information.
    2. If not logged in create an anonymous user.
    3. Query the FrameworkEJB and determine the security constraints assigned to the current page request if any.
    4. If User has access permission for page request continue, else redirect to Redsquid login-in page.
    5. Inject user into request to be available for use by web application.

Redsquid session management was handled by creating a cookie called SSOSESSIONID with a path of “/”. The UserManagerEJB then assigns the SSOSESSIONID to a UserBean object that is then persisted to a database.

Visit the BETA version of the site: http://archaeologydataservice.ac.uk

Leave a Reply