« Building apps on the... | Main | Aching Legs. »

Roller architecture.


According to the three amigos "architecture is the set of significant decisions about the organization of a software system." Here are some of the more significant decisions that have been made in the development of Roller. Some are questionable, some are bad and have been reversed, and some, as longtime followers of Roller internals will note, are new.

Presentation Layer

  • Editor UI will be implemented as Struts actions and JSP pages.
    • JSP pages will use Struts tags, JSTL wherever possible, and custom tags as needed.
    • Header and footer includes will be used (rather than Struts Tiles).
    • JSP custom tags are to be preferered over JSP Scriplets.
  • HTML Forms will be implemented with Struts form tags.
    • Struts form tags will be generated via XDoclet from business layer POJOs.
    • Each Struts form bean can copyTo a POJO or copyFrom a POJO
    • copyTo POJO methods will only copy primitives (String, Boolean, boolean, Integer, int, etc.).
  • Weblog pages and RSS feeds will be implemented via Velocity templates.
    • Users will use Velocity templates to define pages of weblog.
    • Weblog page macros will be implemented as Veloci-Macros.
  • Deployment descriptors
    • struts-config.xml will be generated by XDoclet.
    • web.xml and roller.tld will be generated by XDoclet.
  • Interface with Business Layer
    • Presentation Layer will depend on Business Layer via interfaces only.
  • Performance
    • Weblog pages and RSS feeds will be cached via Servlet Filter version of OSCache.
    • RSS feeds will obey HTTP IF-MODIFIED-SINCE header.
    • Main page will be cached via OSCache custom JSP taga
  • Bad decision, reversed: Struts form beans will each wrap a POJO.
  • Bad decision, not yet fully reversed: Editor UI will be implemented via large grained custom JSP tags.

Business Layer

  • Business Layer will be defined by a set of interfaces.
  • Business Layer objects will be implemented as hand-coded POJOs.
  • Business Layer will be Presentation Layer and persistence engine independent
    • Business Layer will not depend on presentation APIs (eg. Struts, Servlet API).
    • Business Layer will use a Persistence Strategy interface
    • Persistence strategy will be implemented for both Hibernate and Castor.
    • Hibernate and Castor mapping files will be generated by XDoclet from POJOs.
  • Bad decision, reversed: POJOs will be generated by EJBDoclet from abstract EJB bean classes.
  • Bad decision, reversed: Each Business Layer method will open, commit or rollback, and close it's own persistence session.

Persistence Layer

  • Open Session in View pattern will be used to ensure maximum of one persistence session per request.
    • At the start of each request, persistence session will be opened via Servlet Filter.
    • At the end of each request, persistence session will be rolled-back and closed via Servlet Filter.
    • Persistence Layer actions must exlicitly commit changes.
    • Persistence sessions will be managed via Thread Local Storage (similar to Thread Local Session).
  • Load object by ID will return null if object not found.

Comments:

Dave, your wiki text isn't rendering correctly in the RSS feed. I'm seeing the wiki format not readable text. For example, your link displays as

[Thread Local session|http://hibernate.org/42.html]

I'm pretty sure this isn't what you want.

Posted by Jeff Duska on November 17, 2003 at 08:22 PM EST #

Congratulations, you've found a bug in the Roller Wiki plugin. I wonder if Lance's most recent plugin changes will fix this.

Posted by Dave Johnson on November 17, 2003 at 08:32 PM EST #

I want to incorporate Apache Roller in my spring App and I want to customize it as well. Can you guide or provide me one example where in Spring MVC Application, Roller has been integrated and customized. I would really appreciate it.

Posted by jimmy on May 05, 2011 at 11:12 PM EDT #

Post a Comment:
  • HTML Syntax: NOT allowed

« Building apps on the... | Main | Aching Legs. »

Welcome

This is just one entry in the weblog Blogging Roller. You may want to visit the main page of the weblog

Related entries

Below are the most recent entries in the category Roller, some may be related to this entry.