Search a CodePlex project

We supports Web Operating System (WebOS) development from Ajax Portal 2.0.0 The difference between WebOS and Enterprise Portal/Mashup is possibility to use browser window as desktop and move the portles like window on your computer/tablet.

We supports WebOS development from Ajax Portal 2.0.0.

Home site:

Live Demo WebOS mode of Ajax Portal 2.0.1 Alpha2 is available.

The first site started to use Ajax Portal as Site engine.

Download the latest release:

Ajax Portal

We propose the new engine (Ajax Portal technology) for Enterprise Portals. Ajax Portal technology is based on Web 2.0 features and concept of rich applications. The key point is usage of Ajax approach totally. Ajax Portal technology is oriented on B2B and B2C solutions.

We support WebOS development. The difference between WebOS and Enterprise Portal is possibility to use browser window as desktop and move the portles like window on your PC.

Enterprise Ajax Portal is software product which is based on Ajax Portal technology. Enterprise Ajax Portal aggregates contents of Internet/Intranet sites and Web-applications on one Portal Page (or several pages if it's necessary).

Now you should not to visit several sites to check: last news, new letters in your e-Mail box, number of your flight miles in your account and even the alerts about sales in your favorite shop. Your may use a prepared selection (which is prepared before by you or another person(s)). As result you save the time because you should not do boring navigation and surfing and is able to see the most interested information for you. Enterprise Ajax Portal is compromise between conveniences, human laziness and modern software features.

Of course, you have possibility to customize the portal page for your needs without software developer (Personalization is key feature). Enterprise Ajax Portal makes the software user-friendly.

P.S. Enterprise Ajax Portal is your choice for Business and Life. This is solution for all people who has computer and uses it every day.

Ajax Portal Team.

Contact person: Sergei Sokolov, ([email protected])


Too many people don't understand difference between Enterprise Portal ( see the term on wikipedia) and Web Portal ( see the term on wikipedia). It's not a problem. Only software developer is able to understand it. You as end customer have to know only that this approach saves time of site development and as result money for site/portal owners, IT companies and software developers.

Picture 1. Product segments

Enterprise Ajax Portal provides rich interactive interface, modern features like Drag&Drop, Ajax content update and absolutely new portal features like region states, browser page approach, universal layout and portlet orchestration.

Who told you that you need any software development in Enterprise Portal? You can, but you should not. Enterprise Ajax Portal can be use by:
  • the end customers for integration of existing applications (without any changes of the applications and any software development),
  • the software developers for implementation of new Web products and services.
Please, show this site to your IT manager or software developer in your company.

You may to add yourself in our Google group As result you will receive month reports about our achievements, new releases and new available documentation.

1.1. Ajax Portal For Software Developers

We extend existing enterprise solutions which are based on standard JSR-168 and JSR-286. We don't use any bridges like JSR-301 and JSR-329 based. We use AJAX technology totally. It gives us a possibility to build easy and high performance portal solution which called Enterprise Ajax Portal. We evolve classic Enterprise Portal approach to Web 2.0 solution (Intranet 2.0).

The first main advantage of our approach is usage of standard Web applications without changes as Portlets (Widgets). It saves your money for software development or even excludes this necessity. The second advantage is AJAX usage. Any portlet changes are doing without reloading of portal page (loading content, any actions in the portlet, etc.). It saves Internet traffic from/to portal server in several times.

We support enterprise development by JSP and JSF tag libraries.

Client side part of our product is written on JavaScript. It gives possibility to use it with Java, .NET, PHP, Perl, etc. solutions.

We are going to propose a new JSR for Java community about Portal and Portlets of the new generation.

Just read about our product below and try to use it in your life.

You may to add yourself in our Google group As result you will receive month reports about our achievements, new releases and new available documentation.

See How works JavaScript API, How to create static page, Portlet API

1.2. News

1.3. Requirements

Enterprise Ajax Portal works with the following browsers:

MS Internet Explorer 7, Mozilla Firefox 3.6, Opera 9,

Safari 4.0, Google Chrome 15

1.4. What is Ajax Portal?

I propose a new enterprise portal architecture (Ajax Portal) which is based on Ajax calls exclusively. It simplifies portlet creation and even allows to forget about portlets as portal server side components. Instead, I propose using any static or dynamic HTML/XHTML resource as a portlet. It gives the possibility to use standard Web applications based on JSF, Tapestry, Struts 1/2, Webwork frameworks, and even non Java-based technologies, such as ASP, ASP.NET, Perl, PHP, etc. as portlets (content sources for portlets on the portal page).

Unlike a portlet bridge (JSR 301 and JSR 329 standards), Ajax Portal client side requests the HTML/XHTML resource (portlet) for both context and data.

Ajax portal uses ajax4all subtechnology (implementation of Ajax Submit pattern) for supporting the applications based on Lite Ajax pattern (the application uses standard controls of HTML form).

For resolving security issues (e.g. browser security and firewall rules) and/or opening a secure channel, all Ajax requests can be sent through HTTP Proxy which retranslates requests and responses to and from the portlet server.

To use existing Web applications as portlets and to exclude the need to modify these applications, Ajax Portal has a special Content Aggregator component. This component allows getting the body of HTML/XHTML resource (content of the BODY tag) or content of any element of HTML/XHTML resource by value of id attribute for Content Injection into the portal page. Content Aggregator also extracts JavaScript links and sources and CSS styles and injects them into the portal page by a special method (specified by portal implementation).

Portlets may be set in portlet regions on the portal page. Such portlets have the RegionByDefault parameter specifying the region where the portlet will be added during portlet installation in the portal page. Ajax Portal allows to Drag&Drop portlets within a region and from one region into another. Region usage gives an additional possibility for portlet decoration (view of the portlet depends on the state of both the region and the portlet).

The greatest event in history of our project: Standard approach for Enterprise Portal was dead 26 April 2010 when Ajax Portal example with ajax4all library was started. Ajax Submit pattern was implemented completely.

1.5. Main Features

Features implemented:
  • Portlet content (HTML, XHTML, CSS, scripts, etc.) can be loaded by Ajax Calls directly from portlet server.
  • Portlet loading/working/updating is performed without portal page reloading.
  • Posibility to use standard Web application without their changes as portlets.
  • Ajax Portal group proposes Portlet API based on MicroServlet MVC framework for classic portlet development.
  • Drag & Drop support.
  • Common wizards and dialogs.
  • Personalization module
Technical features:
  • Transformation of standard Web application to Ajax-based application
  • Multi-platform development (support of Java, .NET and PHP platforms)
Features in progress:
  • Russian, German localizations (internationalization)
  • Security module

1.6. Why Ajax Portal?

Update of portlet content is executed by Ajax Call without reloading the Portal Page. This approach saves Internet traffic between portal server and portlets.

Portal Page defines the layout (position of each portlet on portal page), but the layout can be changed by the Client Side API.

Ajax Portal is platform-independent and programming languages-independent (client side is implemented as JavaScript library (API), but the server side can be based on Java, .NET, Perl, PHP, etc.).

Only Personalization Service and HttpProxy components are required for Ajax Portal functionality. Both server side components have to implement interfaces described by Ajax Portal specification. Other server side services and components are optional.

CMS is out of scope of Ajax Portal specification. A software developer can use any CMS, databases and any other sources for content management.

Ajax Portal JavaScript library (API) provides a possibility to create, modify and delete any portlets and regions on the client side (in the browser).

1.7. FAQ See FAQ on wiki

1.8. Overview of Ajax Portal Technology

Ajax Portal is a technology for web portal development which supports content aggregation from different instances (content of any HTML/XHTML resources in Internet). It's possible to use standard web applications as portlets. The server technology doesn't matter (Java, .NET, ASP, PHP, Perl, etc.).

Picture 1. Screenshot of Enterprise Ajax Portal demo version 1.0.1

Picture 2. Mashup demo page for Minsk Startup Weekend No. 6 (Apr 30 – May 1, 2011 screenshot), Enterprise Ajax Portal version 1.0.3

Picture 3. Demo - Internet newspaper

Picture 4. Demo - HTML prototype of Social Network application The application has three pages. There're menu buttons for navigation between pages.

Picture 5. Demo - Social Network application in Ajax Portal (all three pages are open in different portlets; navigation buttons are hidden; personalization of each page are available)

1.9. Basic Terms

Ajax Portal proposes a different terminology than JSR 286:
  • Portal is a Web application providing the content aggregation from different sources, personalization (implemented by PersonalizationService), security (e.g. Single Sign On for related Portlets) and the presentation layer of Information System.
  • Ajax Portal provides content aggregation of Portlets and any static (any HTML/XHTML page) or dynamic (any Java based, .NET, ASP, Perl, PHP, etc. application) resources from Internet.
  • Portal Page represents a complete HTML/XHTML document and aggregates several portlet regions and Portlets.

Picture 4. Basic Portal Page components (Content Areas, Portlets and Portlet Regions)
  • Content is a set of components in HTML/XHTML document (e.g. text, images, links, etc.).
  • Content Area (instead of Portlet Content in JSR 286) is any rectangular bar with Content in HTML/XHTML document.
  • Portlet (instead of Portlet Window in JSR 286) provides decoration for the Content Area and additional operations (minimize, maximize, open in a new window, etc.). As a rule, any portlet has some content and a header with an icon, a title, some markers (e.g. draggable icon marker) and behavior buttons.
  • Portlet Region is a rectangular bar with Portlets. Portlet Region provides decoration for the region and an additional decoration for the portlets in the region. Portlet Region also provides some special operation for the portlets (e.g. portlet minimizing and maximizing, Portlet Drag & Drop between regions and inside of the region).
Portlets can be situated outside of Regions.
  • Portlet Application (instead of Portlet Container in JSR 286) is a server side component supporting request processing and dynamic content generating. Portlet Applications are used as pluggable user interface components that provide a presentation layer of Information System. Ajax Portal provides Java based default implementation of Portlet Application (see Portlet implementation module of Ajax Portal). Portal and Portlet Applications can be built together as one Web application.

1.10. Architecture

We extend existing enterprise solutions which are based on standard JSR-168 and JSR-286. We don't use any bridges like JSR-301 and JSR-329 based ones. We use AJAX technology exclusively. It gives us the possibility to develop easy and high performance portal solutions which are called Enterprise Ajax Portal. We implement classic Enterprise Portal approach by Web 2.0 solution (Intranet 2.0).

Architecturally Ajax Portal consists of two main parts:
  • Server side - portal server.
  • Client side - portal JavaScript application.

Server side of Ajax Portal includes the following main components (see picture below):
  1. Portlet connector - portlet container of JSR168/JSR286 portlets.
  2. Content aggregator - supports work with standard Web applications.
  3. Portal Web application - provides implementation of main services (e.g. Personalization Service, etc.).
  4. HTTP Proxy - provides the possibility to load content (by Ajax calls) from resources outside of portal domain.

Client side of Ajax Portal includes the following main components (see picture below):
  1. Portal Page - provides minimal set of CSS and JavaScript.
  2. JavaScript UI Library - provides the main UI components of the portal: PortletPage, Region and Portlet. The library supports all interactive effects as Drag&Drop, themes for regions/portlets (especially for accordion and tabs functionality).
  3. JavaScript Portal API - supports Ajax Call to the portal and portlets.
  4. Content aggregator - supports Content Aggregation pattern by ajax4all JavaScript library.

Picture 5. Ajax Portal architecture

Client (browser) connects to Ajax Portal Server using HTTP. Ajax Portal Server is a Web Application. The Portal builds a portal page (HTML/XHTML page and required images, CSS files and scripts). The portal page defines:
  1. the layout of the portal page,
  2. the navigation mechanism,
  3. the possibility to change portal settings.
The portal page may contain the content of the portlets or it can be loaded by client side of portal directly from portlet server or through the HTTPProxy component.

Content of each portlet can be loaded by the following ways:
  1. directly from portlet application (portlet server),
  2. form portlet server thought HttpProxy component,
  3. portal server injects content of portlets in the portal page during its rendering.

The difference of principle is Portlet Phases (see picture below). The classic approach uses 3 phases of relations between portal and portlets: action (apply of changes in current portlet), event sending and rendering of content. For Ajax Portal only the render phase is required. Each activity between portal-portlet and portlet-portlet is supported by Ajax calls. By Ajax call the portlet:
  1. sends parameters and receives a new portlet content,
  2. sends application data to the portlet and receives the result code (e.g. success or not),
  3. sends application data to another portlet (portlet intercommunication).
The picture demonstrates parameter sending and receiving of the new portlet content. An important feature is that the portal page is not reloaded. The portal sends only the portlet content.

Picture 6. Portlet phases in Ajax Portal

Everybody knows about security issues with Ajax calls outside of current domain, but Web Applications Working Group with W3C created Cross-Origin Resource Sharing. It allows access to resources outside of current domain by Ajax.

Ajax Portal provides HTTP Proxy component which helps to connect outside of current domain without Cross-Origin Resource Sharing (it's actual for old browsers). In addition HTTP Proxy component helps to support SSO. It's not possible to store password and any security certificates in JavaScript code (all Portlets are part of portal page and can access to all properties and methods). As a result, all security certificates, SSO tickets are added during the proxy of Ajax calls by HTTP Proxy component.

Picture 7. Component and technology pool

1.11. How Does It Work? How does JavaScript API work?

Portlet Core: TBD Portlet API

2. Special Appeal No. 1: Region States

Ajax portal supports five states of Regions. Each region state provides a specific decoration for the Region and an additional decoration for the Portlets in the Region.
  • nodecoration view cancels all decorations of the portlets in the region.

Picture 1. Nodecoration region state.
  • window view represents the current region as a window. The window has an icon and a title. All portlets have no decorations in the region.

Picture 2. Window region state.
  • standard view is classic view of the portlet. Any portlet is decorated as a small window with icon, title and behavior buttons. Set of buttons depends on the Portlet View (the buttons change the portlet state).

Picture 3. Standard region state.
  • accordion view represents portlets in the region as multiple panes (one pane for one portlet). Each pane has the same header as classic portlet view except for behavior buttons (see Standard state) and content. All headers are displayed vertically as horizontal bars. Only one pane can be selected at a time. By default the first pane is active. Content of the pane is shown under the pane header. User can activate another pane by clicking on the corresponding header.

Picture 4. Accordion region state.
  • tabs view represents portlets in the region as multiple tabs (one tab for one portlet). Each tab has a header and a content. Usually the header has an icon and a title. All headers are displayed horizontally above the content. Only one tab can be selected at a time. By default the first tab is active. User can activate another tab by clicking on the corresponding header.

Picture 5. Tabs region state.

3. Special Appeal No. 2: Exotic Portlet Themes

Ajax Portal supports the following exotic themes for portlets in base package (see below). The themes are supported only for Portlets outside of any Region.
  • Alternative1 theme (there're no portlet icon and title)

Picture 1. Alternative1 theme.
  • Alternative2 theme (Portlet Content follows after the portlet title)

Picture 2. Alternative2 theme.
  • Alternative3 theme

Picture 3. Alternative3 theme.
  • Apple theme

Picture 4. Apple theme.

4. How to Write Portlets for Ajax Portal

4.1. Use Existing Web Applications

Ajax Portal provides the possibility to use standard Web applications as portlets without changes.

It's possible by the following ways:
  • by IFRAME HTML tags - starts Web application (Portlet) in a small subwindow on the main page,
  • by ajax4all JavaScript library - ajax4all library implements Content Aggregation pattern. The main idea is injection of Web application content into the portal page by DOM model methods of the browser. During injection all CSS styles, scripts and its links are added in the portal page too.

4.2. Portlet API

Ajax Portal team proposes Portlet API which is based on MicroServlet MVC framework.

Portlet API of Ajax Portal helps to develop a Web application which can work as portlet (has portlet descriptor, implement portlet lifecycle, etc.). It means any portlet developed by Portlet API of Ajax Portal, can be used as standard Web application.

Current Portlet API implementation differs from JSR 286, but in general we try to follow JSR 286. In future we are planning to propose a new JSR request for Java community which will specify portlets and portals of new generation.

Portal Core TBD Portlet API: Lifecycle Why do we use MicroServlet framework as base of Portlet API?

Portlet API uses the following annotations which come from MicroServlet API:
  • RenderForm - annotation defines class, scope, name for request form bean,
  • RenderJsp - annotation defines render JSP.
Portlet API creates its own implementation of RenderMode annotation. The annotation marks the method which should be executed for the portlet’s render mode.

See demo of Portlet API:
public class HelloWorldDispatchPortlet extends AbstractDispatchPortletServlet {

    protected DemoFormExample getRequestForm(RenderRequest request) {
        return (DemoFormExample) RequestFormUtil

    @RenderMode   // by default mode = PortletMode.VIEW
    @RenderForm (name = "DemoFormExample",
                 clazz = com.sokolov.microservlet.example.DemoFormExample.class,
                 scope = Scope.SESSION)
    @RenderJsp (page = "/page/demo.jsp")
    public void doView(RenderRequest renderRequest,
                       RenderResponse renderResponse)
            throws PortletException, IOException {
        DemoFormExample formExample = getRequestForm(renderRequest);

    @RenderMode (mode = PortletMode.EDIT)
    public void doEdit(RenderRequest renderRequest,
                       RenderResponse renderResponse)
            throws PortletException, IOException {
        PrintWriter out = renderResponse.getWriter();
        out.println("EDIT mode.");

    @RenderMode (mode = PortletMode.HELP)
    public void doHelp(RenderRequest request,
                       RenderResponse response)
            throws PortletException, IOException {
        PrintWriter out = response.getWriter();
        out.println("HELP mode.");

    @RenderMode (mode = PortletMode.CUSTOM,
                 name = "HalfPage")
    @RenderForm (name = "DemoFormExample",
                 clazz = com.sokolov.microservlet.example.DemoFormExample.class)
    public void doHalfPage(RenderRequest renderRequest,
                           RenderResponse renderResponse)
            throws PortletException, IOException {
        PrintWriter out = renderResponse.getWriter();
        out.println("HalfPage mode.");

        DemoFormExample formExample = getRequestForm(renderRequest);
        out.println("Param1 = " + formExample.getParam1());

5. A New JSR Request for Java Community

We are planning to propose a new JSR request for Java community which will specify portlets and portals of new generation.
The reasons for creation of the new JSR:
  1. JSR168 and JSR286 don't specify Portal Server
  2. JSR168 and JSR286 don't support Ajax. JSR301 and JSR329 are hot fixed drawbacks of JSR168 and JSR286.
  3. Region approach is standard de facto, but it's not specified by JSR168 and JSR286.
  4. PortletMode should be enum (Java type).
  5. WindowState transforms to PortletState, because Ajax Portal supports Tabs and Accordion region states. PortletState should be enum (Java type).
  6. add new RegionState enum, which supports the following enum values: NODECORATION, WINDOW, STANDARD, ACCORDION, TABS.
  7. TBD

6. About Myself

I'm a lead software engineer with 18 years of development experience. My specialty is database and web development for business applications. For the last 6 years I've been concentrated on the development under Java platform, though I have good experience in C, C++, C#, VB (VBScript), Perl and Flash (action script and animation) development. I was a system architect on my two latest projects. I have deep experience in architecture documentation development.

I started my portal experience from WebLogic Portal 8.0 in 2005.

I've already published 4 books: CSS3 в примери + CD. 336 pages, 2009, Asenevtsi (Bulgaria). CSS 3 в примерах. 352 pages, 2007, Williams (Russia). HTML и CSS в примерах, типовых решениях и задачах. 416 pages, 2007, Williams (Russia). JavaScript в примерах, типовых решениях и задачах. 592 pages, 2006, Williams (Russia).

I have consolidated the following ideas, proposals and experience in Ajax Portal project:
  1. my four-and-a-half-years’ experience in maintenance company intranet in MDTVision (an IBM company),
  2. my proposal of intranet console for MDTVision, EPAM and Exadel,
  3. a small library for the second edition of my JavaScript book,
  4. my experience of enterprise portal development,
  5. ALL components (region states in Ajax Portal), which implement State pattern.

7. Links

Our team:

Home site:

Google group:

Project blog: English version and Russian version (Русская версия)

About myself:

Our code on SourceForge:

P.S. You can find more details about the project on Ajax Portal home page

Ajax Portal team

Contact person: Sergei Sokolov, [email protected]

Not affiliated with Microsoft and CodePlex
To remove your project or any question, please contact us: [email protected]