Monday, October 19, 2009

Does IE6 has any benefits?

I don't like Microsoft like any other open source lover.
Though my question is on greatest nightmare IE6, does it have any benefits?

I was lucky enough to think one
  1. IE6 creates more jobs (i.e UI developer & QA).
hahhahah...... Please comment if you know any other IE6 benefit so i can update this post.




Wednesday, October 14, 2009

Pros and Cons of using DOJO

DOJO is one of the leading JavaScript framework, and few of its competitors are JQuery and YUI.

There are few reasons why anyone would want to use a JavaScript framework like DOJO. 
Since these toolkits provides lot of features out of the box

example:
  1.       Rich html components (i.e. Tables, Menus, Textboxes, buttons, Tooltip, Dialog box etc)
  2.       Event handling (ie onclick, onhover etc)
  3.       AJAX

As we all know the issues(i.e browser incompatibility and many more) we encounter if we write all of these things in regular JavaScript, HTML and CSS. So using any JavaScript library makes a better choice.

Let me summarize my experience using DOJO. First the good things

  1. DOJO has all the components you would most likely use (i.e Calendar, Menus, Trees, Validation, Grids, Event Propagations, Layouts etc)
  2. DOJO supports different themes (i.e Tundra, Soria etc). Also you can write your own look and feel and customize accordingly
  3. DOJO executes fastest on the browser
  4. DOJO is more mature than its competitors (i.e it has enterprise grade quality)
Now comes the bad things which are not exactly bad but could have been better
  1. Less documentation or not a vibrant community who would like to share there hacks
  2. DOJO library is around 1MB of size (i.e problem if your clients doesn't have good bandwidth)
checkout Dojo home page http://www.dojotoolkit.org/ for more updates 






Load Balancing and Clustering Liferay

There are two ways of Clustering Liferay on Tomcat
1. Sticky Session
User request will always goes to same Liferay instance
2. Session Replication
User request can go to any tomcat in cluster and his session is copied on entire cluster


Lets get started for Sticky Session based clustering and load balancing.

Use-Case
Setting up two tomcat Liferay along with apache on same windows machine.

Pre-requirements
1. install Apche 2.x
2. download Liferay5.x and make an extra copy

Steps 1. open httpd.conf from apache_home/conf/ and add these lines at the end

<Proxy balancer://mycluster>
BalancerMember ajp://localhost:8009/ route=tomcatA smax=15 max=50 loadfactor=20
BalancerMember ajp://localhost:8010/ route=tomcatB smax=15 max=50 loadfactor=20
</Proxy>

<Location / >
ProxyPass balancer://mycluster/ stickysession=JSESSIONID
</Location>

<Location /balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
Deny from all
Allow from localhost
</Location>

Step 2.

uncomment the following four lines on httpd.conf

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule status_module modules/mod_status.so

Step 3.

open liferay/tomcat_home_1/conf/server.xml and add jvmRoute="tomcatA" to the following line

Engine name="Catalina" defaultHost="localhost"

so it should look like this
Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcatA"

Step 4.

open liferay/tomcat_home_2/conf/server.xml and add jvmRoute="tomcatB" to the following line

Engine name="Catalina" defaultHost="localhost"

so it should look like this
Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcatB

also change the following port nos


Server port="8006" shutdown="SHUTDOWN"

Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8444"

Connector port="8010" protocol="AJP/1.3" redirectPort="8444"

Thats It!

start apache, tomcatA, tomcatB and

navigate to http://localhost/
also checkout balancer-manager

for more configuration and understanding checkout the following link



If your tomcats run on different server make sure you change index directory to some central place (e.g /common-dir/liferay ) i.e resource.repositories.root=/common-dir/liferay in portal-ext.properties


Tuesday, October 13, 2009

Load Balancing and Clustering Tomcat

There are two ways of Clustering applications on Tomcat
1. Sticky Session
User request will always goes to same tomcat instance
2. Session Replication
User request can go to any tomcat in cluster and his session is copied on entire cluster

There are pros and cons of both approach, however i'll update this blog later on those.

Lets get started for Sticky Session based clustering and load balancing.

Use-Case
Setting up two tomcat along with apache on same windows machine.

Pre-requirements
1. install Apche 2.x
2. download tomcat 5.x /6.x and make an extra copy

Steps 1. open httpd.conf from apache_home/conf/ and add these lines at the end

BalancerMember ajp://localhost:8009/ route=tomcatA
BalancerMember ajp://localhost:8010/ route=tomcatB

ProxyPass balancer://mycluster/ stickysession=JSESSIONID

SetHandler balancer-manager
Order Deny,Allow
Deny from all
Allow from localhost

Step 2.

uncomment the following four lines

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule status_module modules/mod_status.so

Step 3.

open tomcat_home_1/conf/server.xml and add jvmRoute="tomcatA" to the following line

Engine name="Catalina" defaultHost="localhost"

so it should look like this
Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcatA"
Step 4.

open tomcat_home_2/conf/server.xml and add jvmRoute="tomcatB" to the following line

Engine name="Catalina" defaultHost="localhost"

so it should look like this
Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcatB

also change the following port nos


Server port="8006" shutdown="SHUTDOWN"

Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8444"

Connector port="8010" protocol="AJP/1.3" redirectPort="8444"

Thats It!

start apache, tomcatA, tomcatB and

navigate to http://localhost/
also checkout balancer-manager
http://localhost/balancer-manager

for more configuration and understanding checkout the following link