I have just uploaded my presentation at JavaOne for the Technical Session I am presenting tomorrow: Castle in the clouds – SaaS Enabling JavaServer Faces applications (12.10, Esplanade 302, TS-4390). I have also prepared the demos – and they are interesting at the very least. You will find the slideshow embedded in this article (linked from SlideShare) below.
SaaS applications are typically web applications that serve users in many customer organizations from a single instance that runs in the cloud, controlled by the SaaS provider. All customers share a single instance of the application while having private data access. SaaS applications are usually multi-lingual (or at least multi-terminology), multi-time zone and -country and run 24/7. There is a number of common requirements for SaaS applications, such as: self service management of users and roles, customization of the application for the needs of a specific customer organization including hiding and adding fields and changing the boilerplate text, specification of customer specific default values and validation rules and influencing the look and feel. Deep link navigation into the SaaS application should be supported as well as the ability to embed context sensitive links from the SaaS application. In addition, facilities for importing and exporting data to and from the SaaS application are crucial as well as support for ‘SOA on the cloud’ : SaaS application should publish Services for retrieving and manipulating data as well as registering listeners that the SaaS application invokes when specific events occur.
This presentation tells our story of the development of three SaaS style applications based on JavaServer Faces over the past two years. It will introduce the best practices we have arrived at for implementing the requirements listed above. The presentation will include several demonstrations of both the customization and the service interface of JSF based SaaS applications.
SaaS applications serve users in many organizations from a single application instance that runs in the remote cloud. SaaS applications are usually multi-lingual (or at least multi-terminology) and run 24/7. Common requirements for SaaS applications include: customization including hiding and adding fields and managing boilerplate text and influencing the look & feel. Deep link navigation into the SaaS application allows visual integration between the SaaS application and local apps or SaaS running in another cloud. Facilities for importing and exporting data to and from the SaaS application are crucial. SaaS applications ideally also publish Services for retrieving and manipulating data as well as allow registration of listeners – applications outside the SaaS cloud that are invoked by the SaaS application when specific events occur.
This is our story of developing three SaaS JSF applications in the past two years. It shows the best practices we have arrived at for implementing SaaS requirements. It includes demos of both the customization and the service interface.
Experienced Java Web Developers, preferably familiar with JavaServer Faces
What are typical requirements for SaaS style web applications?
Best practices for implementing customization features in JSF applications
How to implement deep link navigation into JSF web applications
An infrastructure for registering and notifying remote listeners for business events in JSF applications
Intro of SaaS style application
Brief overview of our business cases + discussion on typical requirements for SaaS application
Focus on Customization (various aspects)
Focus on (remote) Integration (deep link, service api, remote event listeners)
Summary & road ahead
Approach to factory, organization (customer) and user level application settings
Deep Link navigation into JSF application
Register Remote Listener with SaaS application + notification upon business event