Java Web 2.0 Reference Architecture

A standards based & open source reference architecture for Java web 2.0   

IDE

Netbeans (NB)

Guided Video Tour of NB6 

Client UI(AJAX)

Open Ajax Alliance 

Visual Pack uses Dojo 

Ajax Articles

Intro 

Ajax & Portlets

Ajax Portlet

 Ajax Blueprints

Ajax Blueprint

Ajax Petstore

 Visual Web Pack

Ajax Tutorials 

Getting Started

Hello Web

Ajax Open Source

woodstock (Netbeans Visual Pack Source)

TIBCO PageBus

TIBCO General Interface

Single Sign On (SSO)

SSO Standards 

WS Trust

SAML

Open Id 

Open SSO 

Open SSO 

Google Open ID 

Google SAML 

Web Services (WS)

WS Standards 

WS Security

WS Interoperability

WSDL 

SOAP

UDDI

 OASIS

WS Tutorials

Web Services JAX-WS

REST

Composite Apps

JBI Standard (JSR 208)

99 Second tutorials

Tutorials Netbeans SOA

Microsoft Article

Open ESB

JBI Components 

BPEL Specification 

BPEL JBI Service Engine 

Server Containers

Standards

Java EE

Portlet Specification 

Open Source Implements

Glassfish

Portal Server 

Portlet Reposatory 

Tutorial 

Portlet Tutorial

 

We define a pluggable & interoperable reference  architecture for Java web 2.0 applications based on standards API and using open source code. 

In a nut shell, AJAX based thick client residing inside a web browser, interacts with server using XML. An application server contains all server components, that is, content, business logic implemented as composite applications exposed as web services and web services proxy to access external web services. 

At the server end, we have portal server (contained inside the application server) hosting both active and static contents. 

Web Services are exposed as endpoints of composites applications, that contain business logic. Also a web services proxy is exposed so that AJAX clients can directly call external web services. 

A federated identity enabled Single Sign On (SSO) provides security to the applications including web services.

The reference architecture is one way of implementing web 2.0 applications in Java and NOT the only way. There are other elegant frameworks, but we are mainly concerned with at-least one uniform open source standards based stack. 

We do not attempt to survey all the open source implements of a particular standard, but focus on one of them, preferably the RI (Reference Implementation) of the standard. Also scalability and high availability is kept in mind while using an implementation.


 

The client and server side are loosely coupled,  the UI (User Interface) logic contained within the AJAX client resident in a web browser while the Server side hosts the content as well as the business logic hosted inside an Application Server.

IDE (Integrated Development Environment) 

The two major IDE for Java are Eclipse and Netbeans. However, we have chosen to go with Netbeans, for the following bias.  

We recommend enterprise Netbeans for Web 2.0 reference architecture. This is the only tool you would need to implement the reference architecture, end-to-end for your web 2.0 application.

AJAX Cleints

AJAX (Asynchronous JavaScript and XML) is the basis for browser resident thick clients, interacting with server side using XML. 

Gmail is the best known example of AJAX client. After evaluating multiple options for AJAX development, including GWT (Google Web Toolkit),  Adobe's Flex2 we recommend Visual web pack of netbeans. The best way to get start is here.

Also it is worthwhile to investigate  using the open source TIBCO PageBus and General Interfaces.

Single Sign On (SSO)

Glassfish has a built-in SSO.  Since all the server side components are hosted within the Application Server (Glassfish), the SSO is taken care of by it.

Web Services Composite Applications

Web Services are the end-points of the composite applications, that contain the business logic.  Get started with composite application here

WSDL (WS Description Language)

WSDL let you define a web service. Start here.

BPEL (Business Process Execution Language)

BPEL help orchestrate web services to create new business processes. Here is the video on how to do it with netbeans (approx 15 minutes).

WS Registry

WS Registry are used for publishing and discovering web services. There are two mjor registry types UDDI and Ebxml Registry

The JWSDP (Java Web Service developer's Pack) implements both.

Start here for Glassfish WS registry.

XML Data Manipulation and Storage  

There are multiple options to store/persist XML data. 

The SQL:2003 has SQLXML is implemented by Java DB. JavaDB is embedded within Netbeans. JDBC 4 defines SQL/XML API for Java, XQJ

The other options are to use pure XML store implements in Java  like eXist and Apache Xindice or Oracle's open source Berkley XML DB (Its implemented in 'C', but has Java API, that uses JNI).

Yet another way is convert the XML using JAXB and persist it in Java DB.  Here is a tutorial.

Portlets

Portlets are specified by JSR 168.  They are contained by Portal Server; This in turn are contained by the Application Server.

From Reference Architecture perspective, portlets integrate diverse UI components, both static as well as dynamic.

Web Service Proxy

Web service proxy is required to let Ajax components interact with external web services.  

Application Server

The Java Application Server (Glassfish), hosts all the server side components.