A standards based & open source reference architecture for Java web 2.0
IDEClient UI(AJAX) Open Ajax AllianceVisual Pack uses DojoAjax ArticlesAjax BlueprintsVisual Web PackAjax TutorialsAjax Open Sourcewoodstock (Netbeans Visual Pack Source) Single Sign On (SSO)SSO StandardsOpen SSOWeb Services (WS)WS StandardsWS TutorialsWeb Services JAX-WS Composite AppsServer ContainersStandardsOpen Source ImplementsTutorial
| 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 CleintsAJAX (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 ApplicationsWeb 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 RegistryWS 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 StorageThere 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. PortletsPortlets 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 ProxyWeb service proxy is required to let Ajax components interact with external web services. Application ServerThe Java Application Server (Glassfish), hosts all the server side components. |
(c) Ashish Banerjee, 2008, www.AshishBanerjee.com