Using JavaServer Faces ontop of a WebService with JRadioDj 
I'm working on a simple web application to generate a plain text playlist file listing songs from a collection of mp3's and ogg's songs on the server.
It is basically a DJ interface for internet radio stations like IceCast.
It's been a good opportunity to evaluate the current java web frameworks, like JavaServer Faces, Spring, WebWork, and Tapestry.
Architecturally I wanted something that dealt primarily with XML. Basically so the whole application is a WebService through XMLHttpRequests and XMLHttpResponses. Then to put an HTML layer ontop of this to provide the browser view.
The current implementation uses jspx as the view to generate the xml output. The business logic is mostly provided already by the opensource libraries
jaudiotagger to read mp3 headers, and
j-ogg to read ogg/vorbis headers.
My first attempt, and the current implementation, at the html layer was using only xsl and css. It seemed to be the cleanest approach, but there's two obvious problems. First, building input forms with xsl is not fun. Second, i believe, building the view components should be something that can be done by a graphic designer or prototyper.
Step in Sun Studio Creator. A very simple JavaServer Faces project can be created using something like JDOM library to parse the xml from the webservice layer, and Creator to create good looking html pages and forms quickly.
This gives a very nice coding platform, strong on MVC separation, and also strong on providing clear development roles separation.
What does need further investigation is the best way to pass the session information through the xml interface, information that is typically private to a particular user, for example shopping cart contents.
The source code for JRadioDj is available on the public subversion repository at
http://svn.wever.org/svn/public/jradiodj/trunk/