Tuesday, March 27, 2007

eXo Portlet Container 2.0 beta

The eXo PC team is pleased to announce the first available implementation of the incoming JSR 286 - Portlet 2.0 specification

This product comes with many functionalities

Look the hot news on exoplatform.com!

EXO-PortletContainer 2.0 beta running

The eXo PC team is pleased to announce the first available implementation of the incoming JSR 286 - Portlet 2.0 specification

This product comes with many functionalities:

* plugin architecture
* clustering support
* jsr 286 implementation with:
- resource serving
- fragment serving -- AJAX support
- shared render parameters
- portlet events (inter portlet communication)
- portlet filters
- test portal fully refactored
- portal maker's framework

EXO-PC Tomcat 5.5 bundle includes Apache Tomcat 5.5.17 distributive
bundled with eXo PC sample applications and neccessary libraries.

EXO-PC includes:
Test portal - portal application which provide portlets functionalities (portal.war)
Test portlets - portlets, which showing ability of the jsr168 portlet specification (portlets.war)
Test portlets 2 - portlets, which showing ability of the jsr286 portlet specification (portlets2.war)

1. Start Up
Tomcat 5.5 with EXO-PC 2.0 beta bundled can be started by executing the following commands:

$CATALINA_HOME\bin\exo-run.bat (Windows)

$CATALINA_HOME/bin/exo-run.sh (Unix)

2. After startup, EXO-PC 2.0 beta sample applications will be available by visiting:


3. More information at web http://docs.exoplatform.org/exo-documents/exo-portlet-container.site or send an email to "exoplatform@objectweb.org" or "exo-portlet-container@objectweb.org".

Download at: http://forge.objectweb.org/project/showfiles.php?group_id=151&release_id=1914

Thursday, March 22, 2007


wiki en and wiki ru

JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language.

Sample JSON

"data": "The markup of fragment",
"portlets": [
"wid": "8759875984237598347",
"title": "заголовок",
"mode": "VIEW",
"state": "NORMAL",
"content": "The markup of portlet",

Sample JavaScript, where is req.responseText - is the JSON response.

var data_object = eval("(" + req.responseText + ")");
alert("data_object.data = " + data_object.data);
var frag = data_object.data;
var portlets = data_object.portlets;
var portletLength = portlets.length;
for (var i = 0; i < portletLength; i++) {
document.getElementById("p" + portlets[i].wid + "title").innerHTML = portlets[i].title;
document.getElementById("p" + portlets[i].wid + "content").innerHTML = portlets[i].content;


JSON official
JSON in JavaScript
JSON in Java
Generate JSON from XML to use with Ajax
Генерирование JSON из XML для использования с Ajax

Wednesday, March 21, 2007

The portlets

This is the article about portlets. It is the first steps to portlets and portal. I am talking about portlets, portals, aggregating portlets to portals, portlet API (JSR168), main portlet’s sides and showing simple portlet code. Prerequisites include understanding of of XML, HTML, Servlets and JavaServer Pages.

How does it work?

Portals are respected by a number of characteristics. The two most often observed by users are:
  • Aggregation
  • Personalization.
These characteristics have a major impact on the programming model, and how it differs from a non-portal web site.

Aggregation refers to taking content from multiple, independent, delivery channels, and providing a unified user experience. A Portal page will often contain multiple
portlets, each rendering content from a separate source. Aggregation is outside of the scope of JSR-168. Many Portal engines manage pages and aggregation differently.

Personalization refers to allowing each user to customize their portal experience. Different portal engines will provide for differing levels of personalization. JSR-168 includes a notion of Portlet Preferences, which a developer can use to allow a user to customize how the portlet
will perform for that specific user.

Portlet is a new type of Web Component, cousin to the Servlet, provides the interface to content.

What Is JSR-168?
The numeric designation for the JCP’s first local Portlet Specification.
Remote portlet technology is defined by the WSRP specification.
Extends Servlet Specification 2.3 with new Portlet concepts.
Defines the standard contract between the Portlet container and Portlet components.
JSR-168 does not define Portal behaviors, such as how pages are laid out, how aggregation works, how administration is performed, etc.

Why JSR-168?
Prior to JSR-168, we had many different Portlet APIs. The lack of standards fragmented the solution space, creating issues for customers and ISVs.

Portlets and servlets
Portlet-based Applications vs Servlet-based Applications Installing a Portlet Application provides capability, not content. Portlets from multiple applications can be
aggregated on the same page. More administration with Portlets and Portals than with traditional web applications.

Portlets Differ from Servlets
  • Two phase request processing
  • Persistent render parameters
  • Portlet render as markup fragments
  • Special URLs to access a Portlet
  • Portlet Modes
  • Portlet Window States
  • Portlet Preferences

Some of the Portal Servers That Support.. JSR-168
Open Source:

MVC and Portlets
Portlets in MVC terms:
  • Portlet class – Controller
  • Portlet’s JSP – View
Model/View/Controller Pattern
  • Model
Abstract interface
No user interaction
No presentation
  • View
Acquires Model data and renders it
Can be replaced, independent of the Model
  • Controller
Receives input events
Provides the means to effect change on the Model
Orchestrates interaction between Model and View
MVC and Portlets
The Portlet's primary role is as the Controller. Receives events from the container
  • Process actions
  • Render content

Portlets typically dispatch to the View (usually a JSP page).
As the Controller, Portlets orchestrate interaction with the Model and moving content to the View. The Model can be anything: POJO, EJB, Web Service, etc. A Portal is intended to provide an aggregated UI to models, not to necessarily contain those models.


Friday, March 9, 2007


Yahoo polls:
Are you using Open Source Portal Server?

Open Source

  • eXo Platform
Home page
eXo Portal 1.1.4
eXo Portal 2.0 alpha
  • Apache Pluto
Apache Software Foundation
Apache Pluto

  • JBoss Portal
JBoss Portal
Home page:

  • Jetspeed 2
Home page:
  • Liferay Portal
Home page
Devzone forums
  • uPortal
Home page:
  • Gridsphere
Home page:

Yahoo polls:
In your opinion which is the best open source portal server?


  • Sun Java System Portal Server
Home page: http://www.sun.com/software/products/portal_srvr/home_portal6.xml
Documentation: http://docs.sun.com/app/docs/coll/PortalServer_05q1
Community: http://swforum.sun.com/jive/forum.jspa?forumID=80

  • WebSphere Portal
IBM http://www.ibm.com/
IBM WebSphere Portal Version 6.0 http://www-306.ibm.com/software/info1/websphere/index.jsp?tab=landings/portalbuzz
Home page: http://www-306.ibm.com/software/genservers/portal/
Documentation: http://www-106.ibm.com/developerworks/websphere/zones/portal/proddoc.html
Community: http://www-106.ibm.com/developerworks/forums/dw_forum.jsp?forum=168&cat=9

  • BEA WebLogic Portal
BEA http://www.bea.com
BEA WebLogic Portal 9.2 http://dev2dev.bea.com/wlportal/
Home page: http://www.beasys.com/framework.jsp?CNT=index.htm&FP=/content/products/portal
Documentation: http://e-docs.bea.com/wlp/docs81/index.html
Community: http://forums.bea.com/bea/forum.jspa?forumID=2044

  • Oracle Portal
Home page: http://www.oracle.com/technology/products/ias/portal/index.html
Documentation: http://www.oracle.com/technology/products/ias/portal/documentation.html
Community: http://www.oracle.com/technology/products/ias/portal/discussion_forums.html

  • Vignette Portal
Home page: http://www.vignette.com
Documentation: http://www.vignette.com
Community: http://www.vignette.com

Yahoo polls:
Which commercial portal meets most of your portal requirements?

Does portal (portlet) create revolution in web application development in future?


Web portal
Open Source CMS
Yahoo polls
Open Source Portals in Java
Open Source Portal Comparison (pdf)

Don't forget delete cookie in your browser when you faced with strange behave of your application while test it on other AS !!!

Monday, March 5, 2007


"The XMLPortletRequest interface is a script interface to allow portlet supplied scripts to perform HTTP client functionality similar to the functionality provided by XMLHttpRequest. Unless stated otherwise, most of the concepts, behavior (including security constraints and considerations) of the XMLHttpRequest also apply to the XMLPortletRequest." (JSR-286 PLT.E)

interface XMLPortletRequest {
attribute EventListener onreadystatechange;
readonly attribute unsigned short readyState;
void open(in DOMString method, in DOMString url);
void open(in DOMString method, in DOMString url, in boolean async);
void open(in DOMString method, in DOMString url, in boolean async, in DOMString user);
void open(in DOMString method, in DOMString url, in boolean async, in DOMString user, in DOMString password);
void setRequestHeader(in DOMString header, in DOMString value);
void send();
void send(in DOMString data);
void send(in Document data);
void abort();
DOMString getAllResponseHeaders();
DOMString getResponseHeader(in DOMString header);
readonly attribute DOMString responseText;
readonly attribute Document responseXML;
readonly attribute unsigned short status;
readonly attribute DOMString statusText;

<script LANGUAGE=JavaScript>

var portletReq;

function asynchGetXMLPortletRequest(){
var requestURL = document.getElementById("fragmentURL").value;
try {
portletReq = new XMLPortletRequest();
} catch(e) {
alert("Exception: I could not find the XMLPortletRequest");
alert("portletReq = " + portletReq);
portletReq.onreadystatechange = processReqChange;
portletReq.open('GET', requestURL, true);

function processReqChange() {
if (portletReq.readyState == 4) {
if (portletReq.status == 200) {

function displayInvoice() {
var div = document.getElementById("portletcontent");
div.innerHTML = "";
div.innerHTML = portletReq.responseText;
var but = document.getElementById("mainbut");
but.value = "clear";
but.onclick = clearContent;

function clearContent() {
var div = document.getElementById("portletcontent");
div.innerHTML = "";
var but = document.getElementById("mainbut");
but.value = "Serve fragment";
but.onclick = asynchGetXMLPortletRequest;


<input type="button" id="mainbut" value="Serve fragment" onclick="asynchGetXMLPortletRequest()">
<input type="hidden" id="fragmentURL" value="<portlet:fragmentURL /> ">
<div id="portletcontent"></div>


XMLPortletRequest Proposal
XMLPortletRequest - Part 1: Background
XMLPortletRequest - Part 2: Wrapping XMLHttpRequest
Web Services for Remote Portlets - HTTP Client API

Friday, March 2, 2007

Translate sites

There are translate sites:

Google translate
Traslate text and web page.

1. Traslate web page: Chinese -> English
If you would like to translate chinese web page to english you shold use pref string "http://www.google.com/translate_c?hl=en&langpair=zh%7Cen&u=" in your browser's string of url. For example, if you want to translate Chinese news site "http://www.chinanews.com/" use this url http://www.google.com/translate_c?hl=en&langpair=zh%7Cen&u=http://www.chinanews.com/

2. Traslate web page: RUS -> EN
Если мы хотим перевести какой-то сайт с русского на англ, то нам надо в браузере перед именем сайта вставить строчку: http://www.google.com/translate_c?hl=en&langpair=ru%7Cen&u=
Например, при переводе сайта www.mail.ru с русского на английский получится что-то типа такого:

3. Traslate web page: EN -> RUS
Если же мы хотим перевести сайт с английского на русский - нам надо в браузере перед именем сайта вставить строчку:
Например, при переводе сайта http://docs.exoplatform.org/exo-documents/exo.site/ с английского на русский получится что-то типа такого:

Babel Fish Translation - Traslate text and web page

Перевод текста PROMT - Traslate text and web page

META переводчик - Traslate text

Lingvo translate - Traslate word


English-Turkish-German dictionary
Русско-французский разговорник (russian-french phrasebook)
Переводчик на украинском портале (russian-ukrainian)

Thursday, March 1, 2007


Pizdec - it is the significant russian abuse word :)
Пиздец - это многозначительное русское плохое слово (мат) :)

There are some examples of use it.
Приведу несколько примеров использования.

When it is appropriate to say word "pizdec"?
Когда уместно произнести слово "пиздец"?

The excavator is rowing
Экскаватор гребет

Россия как она есть - картинки :)