tag:blogger.com,1999:blog-81859819255401075962024-03-05T13:36:22.539+05:30Liferay PortalI have created this blog to share my learnings in a consolidated form and quick reference.... Abhishek Saxena <br>
Disclaimer: The views expressed on this blog are my personal opinion and do not indicate or reflect any official opinion.Abhishek Saxenahttp://www.blogger.com/profile/14474352252076953749noreply@blogger.comBlogger24125tag:blogger.com,1999:blog-8185981925540107596.post-66423512636058411672014-04-06T18:16:00.002+05:302014-04-06T18:18:37.029+05:30Liferay Learning resources<div dir="ltr" style="text-align: left;" trbidi="on">
Various resources which a person can use to learn Liferay<br />
<br />
The best option is to go through the official documentation its available in multiple formats. Official documentation is a comprehensive resource for developers.<br />
web / online - https://www.liferay.com/documentation/liferay-portal/6.2/user-guide<br />
https://www.liferay.com/documentation/liferay-portal/6.2/development<br />
<br />
print - http://www.lulu.com/shop/rich-sezov/using-liferay-portal-61/paperback/product-21014853.html<br />
<br />
downloadable pdf - new version pdf will be released soon<br />
<br />
Liferay also offers trainings in different modules, person can enroll for these trainings as per their requirements.<br />
I would recommend undergoing Mastering Liferay fundamentals before taking on developing for Liferay platform course<br />
<br />
https://www.liferay.com/services/training<br />
<br />
There are many videos available on youtube, search with keyword + liferay<br />
Video of Liferay web events along with slides are available at - https://www.liferay.com/events/web-events<br />
<br />
If you are stuck with any issue or need expert help , community resources like wiki, blog forum are best place to seek pointers - https://www.liferay.com/community/welcome/dashboard<br />
<br />
Books from independent authors are also available in print and ebook format.<br />
<br />
Also join various active Liferay user group where people meet regularly and share their knowledge.<br />
<br /></div>
Abhishek Saxenahttp://www.blogger.com/profile/14474352252076953749noreply@blogger.com1tag:blogger.com,1999:blog-8185981925540107596.post-16110661454830206282014-04-06T17:57:00.001+05:302015-08-28T23:37:02.519+05:30Liferay CE vs EE<div dir="ltr" style="text-align: left;" trbidi="on">
It has always been a big question which edition of Liferay should someone use and what are the difference between the various edition.<br />
<br />
Liferay offers Liferay portal in two edition the first one is the community version popularly called as CE and the other as enterprise edition or EE<br />
<br />
In my personal opinion CE should be used in project which are not mission critical and have a limited scope.<br />
Enterprise edition comes with a gamete of functionality and is much robust than CE<br />
The enterprise edition comes with Liferay's product support which is offered through the enterprise subscription.<br />
<br />
https://www.liferay.com/products/liferay-portal/ee/overview<br />
<br />
Check the comparison Tab<br />
<br />
FAQ<br />
<br />
Q: Is it possible to move my existing solution from Liferay CE to EE<br />
A: Yes, its possible to move from CE to EE however the custom components and other custom functionality need to be rebuild / recompiled using the EE sdk.<br />
<br />
Q: Is it possible to develop a new project on CE and then move to EE<br />
A: It is almost like moving from CE to EE and its not a good approach as migration effort is required alongwith manual effort of rebuilding the apps / custom functionality with EE sdk.<br />
EE edition and Liferay developer studio for EE (LDS ) is available to free 30 day trial.<br />
<br />
Q:What kind of support Liferay offers<br />
A: https://www.liferay.com/products/liferay-portal/ee/service-levels<br />
<br /></div>
Abhishek Saxenahttp://www.blogger.com/profile/14474352252076953749noreply@blogger.com0tag:blogger.com,1999:blog-8185981925540107596.post-17357403758929927492013-10-24T17:00:00.002+05:302013-10-24T17:00:17.748+05:30Liferay 6.2 is here<div dir="ltr" style="text-align: left;" trbidi="on">
Check out the latest version of Liferay portal 6.2<br />
<br />
<a href="http://www.liferay.com/products/liferay-portal/liferay-portal-6.2">http://www.liferay.com/products/liferay-portal/liferay-portal-6.2</a></div>
Abhishek Saxenahttp://www.blogger.com/profile/14474352252076953749noreply@blogger.com1tag:blogger.com,1999:blog-8185981925540107596.post-59176196718897867412012-09-02T21:41:00.001+05:302012-09-02T21:43:34.717+05:30What`s New in Liferay<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
I will keep updating this post with new feature and apps in Liferay.<br />
<br />
Liferay Sync: Explanation + details, I will update them this week<br />
<br />
Marketplace:</div>
Abhishek Saxenahttp://www.blogger.com/profile/14474352252076953749noreply@blogger.com0tag:blogger.com,1999:blog-8185981925540107596.post-37626487052526209602012-03-11T20:09:00.002+05:302012-03-11T20:22:30.916+05:30Liferay Sync<div dir="ltr" style="text-align: left;" trbidi="on">Share files by Simple drag and drop. <b>LR Sync will work with version 6.1</b><br />
I would be sharing the ease of usage and performance report soon .<br />
<br />
<b>Official link --</b> <a href="http://www.liferay.com/products/liferay-sync/features">Click Here to go to LR Sync page</a><br />
<b>Download the installer</b> -- <a href="http://www.liferay.com/downloads/liferay-sync">Click Here</a><br />
You need to be registered to download , registration takes few minutes.<br />
<br />
<b>Run the installer file</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4TM3weN57_vfiOETSsFP_Q1ChPD2Kkvsf67HRBX3N_Cs9-2zCkNg2XT_QOKpLhFfa91AoUQ20usrfGTVbQeweZnJG1pu0cWUxowHttepNgw751BYc1vGMmPBvY4RC6zOSee-6c_2eLM0/s1600/capture-20120311-180051.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="27" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4TM3weN57_vfiOETSsFP_Q1ChPD2Kkvsf67HRBX3N_Cs9-2zCkNg2XT_QOKpLhFfa91AoUQ20usrfGTVbQeweZnJG1pu0cWUxowHttepNgw751BYc1vGMmPBvY4RC6zOSee-6c_2eLM0/s400/capture-20120311-180051.png" width="197" /></a></div><br />
<br />
<br />
<br />
<div style="text-align: left;"><b>Set the install path</b></div><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij0Kz-SWgN40oo5HQJq7wfb3bq8jILh_8HqZa51MOHTEXm0DAkcfHyJrOgHjsz6eLx5BunSJ7AwC0THLcQQkKKWKyuGKs_vdgwgxon8spH3QEqOdhjJLA0Ole9z8PCGxMtvAaZHREUOfU/s1600/capture-20120311-175200.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="308" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij0Kz-SWgN40oo5HQJq7wfb3bq8jILh_8HqZa51MOHTEXm0DAkcfHyJrOgHjsz6eLx5BunSJ7AwC0THLcQQkKKWKyuGKs_vdgwgxon8spH3QEqOdhjJLA0Ole9z8PCGxMtvAaZHREUOfU/s400/capture-20120311-175200.png" width="400" /></a></div><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<b>Run Liferay Sync on completion</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfeEEHEdGWptP_qtg3KToOpxGn9kgdnQez8tbNhq9SPXmO_fMpGUIRjDui1TvqXRAkXggxliyAX9ZosPX_iKsEiEKeNqTzeJyprtVDAGrDaNCnpiWIu2lWv20UG-Nl6Jhha0cfaoChqmU/s1600/capture-20120311-175303.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="308" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfeEEHEdGWptP_qtg3KToOpxGn9kgdnQez8tbNhq9SPXmO_fMpGUIRjDui1TvqXRAkXggxliyAX9ZosPX_iKsEiEKeNqTzeJyprtVDAGrDaNCnpiWIu2lWv20UG-Nl6Jhha0cfaoChqmU/s400/capture-20120311-175303.png" width="400" /></a></div><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<b>Fill in the required settings</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7x-iKTktpq4l5ywP2edHI71Z70J9p7WZapbSz-xnBaKLYoo2L1KNWgNgSMWu0JBtanyUV_Wp5c8Zz07UTs8qFyzRjKB4BT3hztLXSlI2rgMnlH5tAPchtqQFmzdZHfrYxY-Td10rXm60/s1600/capture-20120311-175014.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="212" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7x-iKTktpq4l5ywP2edHI71Z70J9p7WZapbSz-xnBaKLYoo2L1KNWgNgSMWu0JBtanyUV_Wp5c8Zz07UTs8qFyzRjKB4BT3hztLXSlI2rgMnlH5tAPchtqQFmzdZHfrYxY-Td10rXm60/s400/capture-20120311-175014.png" width="400" /></a></div><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<b>Edit general , site and account settings</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-6AVuerp4PfTSbzkwFnntUax7O4AJCcgx3HbyG4lDAeSIJPBMit7z1dlYDLOhqugnO1JTECKk8Pl0pkoL7czOnFi3cAZuU4aUKhPcaLZ1G8cEgml-W6p2I7tgCtWHiqz3kHjwgJn6bx0/s1600/capture-20120311-175058.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-6AVuerp4PfTSbzkwFnntUax7O4AJCcgx3HbyG4lDAeSIJPBMit7z1dlYDLOhqugnO1JTECKk8Pl0pkoL7czOnFi3cAZuU4aUKhPcaLZ1G8cEgml-W6p2I7tgCtWHiqz3kHjwgJn6bx0/s400/capture-20120311-175058.png" width="384" /></a></div><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<b>Installation creates a desktop shortcut and LR-sync minimizes to tray</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCcbcF2XqguqTPGStLhj8pkDpPpn-o36aXDKmD01BkZboYLt-K0OUxIvWRyIH6CnQhBgMJdv5QuTMXBVoyEeX_vTKpi799PxfeJdfqpdCPaOjgADyD4H8XdD9CP8y_S87aiG62pcLgeXw/s1600/capture-20120311-175948.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="84" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCcbcF2XqguqTPGStLhj8pkDpPpn-o36aXDKmD01BkZboYLt-K0OUxIvWRyIH6CnQhBgMJdv5QuTMXBVoyEeX_vTKpi799PxfeJdfqpdCPaOjgADyD4H8XdD9CP8y_S87aiG62pcLgeXw/s400/capture-20120311-175948.png" width="76" /></a></div><br />
<br />
<br />
</div>Abhishek Saxenahttp://www.blogger.com/profile/14474352252076953749noreply@blogger.com0tag:blogger.com,1999:blog-8185981925540107596.post-52565364705078109882012-01-08T15:04:00.003+05:302012-02-13T23:59:02.458+05:30How to change Favicon in Liferay<div dir="ltr" style="text-align: left;" trbidi="on">Going through LinkedIn I found out a review requested for website based on LR ,it had the default Favicon showing in the address bar of the browser and I instantly decided to write this post Its really simple to change the Favicon and site logo<br />
using the control Panel change default site logo :<br />
1. Login as admin<br />
2. Go to control Panel<br />
3. Click portal setting under portal section (left hand side bar)<br />
4. Under miscellaneous heading click display setting (right hand side bar) make sure checkbox with label Allow community administrators to use their own logo? -- is checked<br />
5. Click on change appearing below the logo<br />
6. Browse and upload image (good to use .png image)<br />
7. Click save<br />
8 . Click save under right hand side bar For updating for a particular click 1> mange on top bar 2> Setting 3>Click on logo 4>Upload image 5>Save Use<br />
<br />
Below is the link of Wiki Post on LR website --<br />
VM file of Theme or portal-ext.properties to change Favicon<br />
<b><a href="http://www.liferay.com/web/guest/community/wiki/-/wiki/Main/How+to+change+the+favorites+icon">Click here for Wiki Post @ LR to change Favicon</a></b><br />
<br />
</div>Abhishek Saxenahttp://www.blogger.com/profile/14474352252076953749noreply@blogger.com4tag:blogger.com,1999:blog-8185981925540107596.post-14465032288420102882011-10-10T00:21:00.000+05:302011-10-15T01:10:52.896+05:30Some CSS tips ,quick reference for various components<div dir="ltr" style="text-align: left;" trbidi="on">
<b>CSS Changes for updating look and feel of various components</b><br />
<b>Ver 5.2.X</b><br />
for changes in portlet title change class="portlet-title"<br />
<br />
I will add more over the weekend , please share your learning as comments </div>Abhishek Saxenahttp://www.blogger.com/profile/14474352252076953749noreply@blogger.com0tag:blogger.com,1999:blog-8185981925540107596.post-85498580245924870572011-07-14T17:02:00.005+05:302011-07-23T21:11:05.924+05:30Liferay quick start a wonderful guide for beginnersLiferay has got a new post for beginners ,interesting post I thought of sharing it with all .<br />
<b><br />
<a href="http://www.liferay.com/quick-start">Quick start guide</a></b>Abhishek Saxenahttp://www.blogger.com/profile/14474352252076953749noreply@blogger.com0tag:blogger.com,1999:blog-8185981925540107596.post-90338712604945886162011-03-03T08:06:00.000+05:302011-03-03T08:06:01.829+05:30Sucessful Integrations with different tools and servicesList of few tools and services which I have successfully integrated or have come to know.<br />
<br />
<b>CAS</b> -- The Central Authentication Service the most widely used tool works with almost all version of LR ,very less issues while integrating.<br />
<a href="http://www.jasig.org/cas/cas2-architecture">Read on -- CAS</a><br />
<br />
Ease of configuration & integration with Liferay --- 4/5<br />
Performance -------------------------------------- 4/5 <br />
<br />
<br />
<b>SOLR</b> -- features include powerful full-text search, hit highlighting, faceted search, dynamic clustering, database integration, and rich document (e.g., Word, PDF) handling. Solr is highly scalable, providing distributed search and index replication, and it powers the search and navigation features of many of the world's largest internet sites. <br />
<a href="http://lucene.apache.org/solr/">Read on --SOLR</a><br />
<br />
Ease of configuration & integration with Liferay ---- 2.5/5<br />
Performance -------------------------------------- 4/5 <br />
<br />
<b>Terracotta</b> -- Ehcache boost application performance, enhance operational control, and easily scale to large virtualized environments and clouds.<br />
<a href="http://www.terracotta.org/">Read On</a><br />
<br />
Ease of configuration & integration with Liferay --- 2.5/5<br />
Performance -------------------------------------- 4/5 <br />
<br />
<b>LDAP</b> -- All open source LDAP work fairly good ,coolest features in LR 6.0<br />
<a href="http://www.openldap.org/">Read On Open LDAP</a><br />
<br />
<b>NTLM</b> Works perfectly fine<br />
<br />
<b>Facebook</b> Works perfectly however make sure to do cross browser testing use at least LR ver6.0.5<br />
<br />
<b>PayPal</b> Works with almost all versions of Liferay<br />
<br />
<b>Alfresco</b> It has been used in many project ,I am awaiting more feedback to comment on capabilities on different version<br />
<a href="http://www.alfresco.com/">Read on Alfresco</a>Abhishek Saxenahttp://www.blogger.com/profile/14474352252076953749noreply@blogger.com0tag:blogger.com,1999:blog-8185981925540107596.post-25319476025603958422011-02-28T23:14:00.003+05:302011-03-03T08:02:09.249+05:30Book I am reading currentlyHi currently I am going through Liferay User Interface Development book<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2WAC7dclxkT1jFmEb1g-OglMQD7yxaI227lw4foZB0arR-8jkOVs8TnrRSQK2oJ4rft4iIIg6oKJCSUcXMTMLFj0vhIcYtetfjM93kyJPGUfnHdq3cn8w20OBNj5ho4k2a9c_j_pbJiE/s1600/Liferay+user+interface+development.jpg" imageanchor="1" style="clear:right; float:right; margin-left:1em; margin-bottom:1em"><img border="0" height="200" width="159" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2WAC7dclxkT1jFmEb1g-OglMQD7yxaI227lw4foZB0arR-8jkOVs8TnrRSQK2oJ4rft4iIIg6oKJCSUcXMTMLFj0vhIcYtetfjM93kyJPGUfnHdq3cn8w20OBNj5ho4k2a9c_j_pbJiE/s320/Liferay+user+interface+development.jpg" /></a></div><br />
This book is amongst few compact reference resources of LR UI development, the book has a lot of information and will be very helpful in deciding which UI technology to use as per your specification .It has good section on theme,template,layout ,portlet UI ,use of alloy etc.<br />
<br />
<br />
You can get a free chapter for <a href="https://www.packtpub.com/sites/default/files/2626OS-Chapter-5-Advanced-Theme.pdf">advanced theme</a>Abhishek Saxenahttp://www.blogger.com/profile/14474352252076953749noreply@blogger.com2tag:blogger.com,1999:blog-8185981925540107596.post-64633012930462879102011-02-04T21:17:00.004+05:302011-02-12T08:38:57.039+05:30Liferay based tech stack<b>I would like to discuss some Liferay Portal project tech stacks</b><br />
<br />
I will clean the post in coming days :) ,<b>Please share your tech stack as comments</b><br />
<br />
1> Liferay Portal ,defaults CMS , Spring Portlet MVC for custom portlets ,MYSql Databse ,Jqery /JS ,CAS for authentication ,open LDAP.<br />
I believe this stack is most readily used stack with minor changes.<br />
<br />
2>Liferay Portal , Default CMS ,Struts MVC , MYSql database ,NTLM authentication ,Open LDAP.<br />
<br />
3>Liferay Portal ,Alfresco , Spring Portlet MVC<br />
<br />
4> Liferay Portal +VaadinAbhishek Saxenahttp://www.blogger.com/profile/14474352252076953749noreply@blogger.com0tag:blogger.com,1999:blog-8185981925540107596.post-28330707101083593992010-12-31T16:28:00.007+05:302012-04-20T10:54:31.840+05:30Velocity Templating and its application in liferayVelocity is my favorite template language which enables me to get the static pages up in no time with rich content(thanks to the document and image library).<br />
I would like to share some of its fantastic capabilities.<br />
Web content in Liferay is controlled by template scrip file,Velocity can be used for simple transformations in web content/journal portlets which detrmines how the content will be displayed on the page.Velocity can also be utlilized for making custom changes in vm files of Liferay themes.<br />
GUI requirements determine the degree of customization required in VM templates. I have observed cases where a lot of coding effort can be reduced if velocity is used in optimally.<br />
<br />
In liferay portal services can also be used with help of velocity in Liferay themes(VM templates)or templates of Articles (web content portlet).<br />
Lifeay provides service locator to use the services with velocity.<br />
<b>TO enable access of services in liferay make following changes in portal-ext.properties</b><br />
# Input a comma delimited list of variables which are restricted from the<br />
# context in Velocity based Journal templates.<br />
#<br />
journal.template.velocity.restricted.variables=serviceLocator<br />
<b>remove serviceLocator in property it will now look as <br />
journal.template.velocity.restricted.variables=</b><br />
<br />
example --- (a complete example is available in my earlier post named quick tips)<br />
#set ($userLocalService = $serviceLocator.findService("com.liferay.portal.service.UserLocalService"))<br />
#set ($roleLocalService = $serviceLocator.findService("com.liferay.portal.service.RoleLocalService"))<br />
<br />
----------------------------------------------------------<br />
Objects that can be used OOB in VM files <br />
$user, $company, $layout, and $themeDisplay<br />
example ---> $user.getFirstName()<br />
<br />
<b>themeDisplay,company,user,realUser,layout,layouts,plid,layoutTypePortlet,scopeGroupId,permissionChecker,locale,timeZone,theme,colorScheme,portletDisplay,</b><br />
<br />
other variable you can from VelocityVariables.java class from source code<br />
com.liferay.portal.velocity.VelocityVariables<br />
<br />
Check null -- #if ($validator.isNotNull($variable))<br />
<br />
Example<br />
Now if you have a page which displays news article for a person with his name and a custom welcome message you can get his name in through web content portlet , template along with his name which can be dropped at top of page so no need to write a java portlet just use velocity <br />
< b > Welcome to news page< /b ><br />
$user.getFirstName()<br />
< tags> news begins<br />
<br />
<b>Velocity references</b><br />
<b><a href="http://velocity.apache.org/engine/releases/velocity-1.5/vtl-reference-guide.html"><b>Official documentation</b></a><br />
<a href="http://velocity.apache.org/engine/devel/developer-guide.html"><b>Advanced concepts</b></a><br />
<a href="http://www.roseindia.net/apachevelocity/velocity-tutorials.shtml"><b>Quick Learning</b></a><br />
<a href="http://content.liferay.com/4.3/misc/theme-api-4.3.0.html"><b>My Favourite reference link</b></a></b>Abhishek Saxenahttp://www.blogger.com/profile/14474352252076953749noreply@blogger.com2tag:blogger.com,1999:blog-8185981925540107596.post-53467067737323446002010-10-26T12:50:00.002+05:302015-08-28T23:34:52.603+05:30Hardware Requirements and few examples of possible combinations<div dir="ltr" style="text-align: left;" trbidi="on">
There have been many post in Liferay forum around Hardware Requirements<br />
I will share few successful implementation I am aware of and minimum requirements for server and developer sandboxes.<br />
I will update this post every time I come across new config so watch out this space for newer Hardware configs :)<br />
<br />
The best resources for server sizing and hardware requirements are Liferay whitepaper, choose the one which is relevant to your version<br />
LPEE 6.2 Deployment Checklist<br />
Liferay Portal 6.2 Performance Whitepaper<br />
<a href="https://www.liferay.com/documentation/additional-resources/whitepapers">https://www.liferay.com/documentation/additional-resources/whitepapers</a><br />
<br />
<b>There can be unlimited combination so please leave your requirements and I will try to device optimal hardware requirements for you as per my learning's :D</b><br />
<b><br /></b>
General thumb rule before finalizing the architecture and server sizing / hardware configuration is<br />
<br />
1. Gather requirements for<br />
a. Total number of users<br />
b. Concurrent users & maximum logged in users expected at one time<br />
c. Operation expected WCM scenario, Content reading, content access, transaction / login, search etc<br />
d. High availability required<br />
e. Clustering required (Need to request for a cluster key)<br />
<br />
Based on the inputs you can reach a rough sizing estimate using the performance whitepaper<br />
<br />
make sure when you are taking vCPU into consideration use 2 vCPU = 1 physical core.<br />
<br />
Again hardware will also depend on the application being built on top of Liferay so if its a page with login and WCM etc it will handle smaller number of user than plain text age and you need to prorate and adjust the users based on the application and OOB components used from Liferay.<br />
<br />
Make sure in a HA architecture the nodes / cluster node are in same network / DC<br />
<br />
<b>Liferay portal 6.2</b><br />
<b><br /></b>
<b> Production Box</b><br />
RAM --Min : 16 GB , Good to have 32 - 64 GB RAM<br />
Processor - Min 4 CPU (I1 quad core processor) , Good to have 8 CPU ( 2 quad core processor)<br />
example - 2 X Intel core 2 Quad X5677 3.46GHz, 12MB L2 cache<br />
<br />
<b>Liferay portal 6.1 and below :</b><br />
<b>Developer Box</b><br />
Minimal -- 1 GB RAM , processor with clocks more than 2.X Ghz for example celeron processor will suffice if you provide 2 GB RAM and Processor 2.6GHz <br />
if you are working with LR portal 5.1X below you can use processor with lower clock.<br />
<br />
In scenarios where developers have a complete sandbox setup on their local machine my recommendation is at least 2 GB RAM is used with dual core CPU @2.50GHz<br />
(MySQL , eclipse , LR portal , Apache webserver +3rd party integration component<br />
<br />
----------<br />
<b>For Testing /UAT / Staging environment</b><br />
The number of nodes will depend on the load / traffic expected however its good to have Minimum of 2 portal nodes 2 authentication server nodes and a hot standby of DB <br />
<br />
Minimal -- <br />
Liferay portal 1.5 GB RAM , dual core CPU @2.50GHz or more (per node)<br />
------------<br />
<b>Production Environment </b><br />
Some possible combination<br />
<br />
1><br />
OS: Redhat Linux<br />
Sever : Dell Power edge<br />
CPU :1 quad core @2.5Ghz or 2 Dual core with no less clock<br />
Ram :4GB<br />
<br />
2><br />
Sever : Dell Power edge or Sunfire in case of Solaris<br />
2X 2.0Ghz<br />
quad core<br />
8GB<br />
Linux<br />
--------------------------<br />
For DB and third party servers<br />
<br />
Sever : Dell Power edge or Sunfire in case of Solaris<br />
4X1.6GHz<br />
8Gb<br />
Solaris</div>
Abhishek Saxenahttp://www.blogger.com/profile/14474352252076953749noreply@blogger.com1tag:blogger.com,1999:blog-8185981925540107596.post-72967834228451596502010-10-25T17:42:00.000+05:302010-10-25T17:42:27.884+05:30Liferay Installation ChecklistI wanted to share a checklist to follow after Liferay installation to minimize portal start up failures<br />
<br />
1>Check your JAVA_HOME variable .It`s good to use JRE available in JDK bundle<br />
Check for compatibility of JRE required for portal version being used<br />
<br />
2>Check LIFERAY_HOME variable This folder is one folder higher than the location of the application server itself<br />
<br />
3>Check database connection setting & <b>verify database JDBC driver .jar</b><br />
<br />
4>Check consistency of Liferay portal bundle and dependency jars .<br />
<i>corrupt or incompletely downloaded jars create issues hard to investigate</i><br />
<br />
4b>Check consistency of The portal-ext.properties File verify changes made as per your environment<br />
<br />
5>Check for folder permissions (mostly this issue come in Linux/UNIX or other open source OS)<br />
<br />
<b>Troubleshooting </b><br />
a>If server does not start check for setenv.bat <br />
{tomcat-home}/bin/setenv.bat and point JRE_HOME to folder where you installed Java. You setenv.bat haas following entries :<br />
set "JRE_HOME=C:\Program Files\Java\jre6"<br />
set "JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF8 -Duser.timezone=GMT -Xmx1024m -XX:MaxPermSize=256m"<br />
<br />
b>Check for database availability<br />
c> Cheksum jar /portal libraryAbhishek Saxenahttp://www.blogger.com/profile/14474352252076953749noreply@blogger.com1tag:blogger.com,1999:blog-8185981925540107596.post-43833089711202394742010-10-21T17:59:00.002+05:302010-10-21T18:02:43.052+05:30Database connection settingsI have seen numerous post around database connection not working or portal server not starting properly due to the database connections not working properly.Many post including mine are available on Liferay forum for resolving the issue however I thought of making a checklist here for database connection settings.<br />
<br />
Developer need to keep in mind that settings have been changing for every version in lower version till 5.1X DB setting were done in Root.xml , 5.2.X onwards all the setting entries are made in portal-ext.properties file<br />
lets discuss the different version setting first.<br />
<br />
Version 6.X and 5.2X have same config<br />
put JDBC setting in portal-ext.properties <br />
location : <liferay-portal-6.0.2>\<tomcat-6.0.26>\webapps\ROOT\WEB-INF\classes<br />
< 6.X or 5.X><br />
<br />
copy your JDBC settings from portal.properties ---> ## JDBC section<br />
get file from the downloaded source or tomcat setup or directly from SVN<br />
SVN location : http://svn.liferay.com/repos/public/portal/trunk/portal-impl/src/portal.properties<br />
<br />
username is : guest and password is :<blank> leave the password field blank <br />
<br />
e.g.<br />
# MySQL<br />
#<br />
#jdbc.default.driverClassName=com.mysql.jdbc.Driver<br />
#jdbc.default.url=jdbc:mysql://localhost/lportal?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false<br />
#jdbc.default.username=<br />
#jdbc.default.password=<br />
<br />
<b>Liferay 5.1.X and lower versions</b><br />
<br />
Make JDBC changes in Root.xml <br />
ROOT.xml can be found in tomcat\conf\Catalina\localhost\ROOT.xml<br />
<br />
e.g. Sample setting get exact setting from portal.properties file<br />
MySQL <br />
<br />
<i>Resource<br />
name="jdbc/LiferayPool"<br />
auth="Container"<br />
type="javax.sql.DataSource"<br />
driverClassName="com.mysql.jdbc.Driver"<br />
url="jdbc:mysql://localhost/lportal?useUnicode=true&characterEncoding=UTF-8"<br />
username=""<br />
password=""<br />
maxActive="20"</i><br />
<br />
<b>Set properties for schema</b><br />
## Schema<br />
##<br />
<br />
#<br />
# Set this to true to automatically create tables and populate with default<br />
# data if the database is empty.<br />
#<br />
schema.run.enabled=true<br />
<br />
#<br />
# Set this to to true to populate with the minimal amount of data. Set this<br />
# to false to populate with a larger amount of sample data.<br />
#<br />
schema.run.minimal=true<br />
<br />
<br />
<b>Checklist:</b><br />
1> Make sure you have copied your database driver support <br />
e.g. for oracle copy ojdbc14.jar to <liferay_home>\<tomcat>\lib\ext<br />
<br />
2> Test your DB availability and creation of schema<br />
Schema name should match the schema name mentioned in jdbc.default.url <br />
<br />
3>Check that you have correct version of driver support jar and is compatible with your your installation I have seen number of user facing problem due to incompatible version.<br />
<br />
4> Check for proper character set settings for your database<br />
<br />
<b>Detailed Learning resource <a href="http://www.liferay.com/documentation/liferay-portal/6.0/administration/-/ai/installing-liferay-for-an-enterprise-2">official documentation</a></b>Abhishek Saxenahttp://www.blogger.com/profile/14474352252076953749noreply@blogger.com1tag:blogger.com,1999:blog-8185981925540107596.post-92160978295304378372010-09-09T18:51:00.000+05:302010-09-09T18:51:35.817+05:30Links to official standardsAdding links for most common standards which need to be referred while development <br />
<b>1. CLick on link below for email standards </b><br />
<a href="http://tools.ietf.org/html/rfc2822#section-3.4.1"> <i>Email Standards<b></b></i></a><br />
Example : <a href="http://www.regular-expressions.info/email.html">Sample 1</a><br />
<br />
<b>2. W3C's easy-to-use markup validation service, based on SGML and XML parsers.</b><br />
<a href="http://validator.w3.org/">http://validator.w3.org/</a><br />
<br />
<b>3. JSR-000286 Portlet Specification 2.0 </b><br />
<a href="http://jcp.org/aboutJava/communityprocess/final/jsr286/index.html"> Final release </a><br />
<a href="http://jcp.org/aboutJava/communityprocess/final/jsr168/index.html">JSR 168 final specifications</a><br />
<br />
<b>4. Scripting <javascript></b><br />
<a href="http://www.ecma-international.org/publications/standards/Ecma-262.htm"> ecma-international standards</a><br />
<br />
<b>5. Code Conventions for the Java Programming Language</b><br />
<a href="http://www.oracle.com/technetwork/java/codeconv-138413.html"> Conventions </a>Abhishek Saxenahttp://www.blogger.com/profile/14474352252076953749noreply@blogger.com6tag:blogger.com,1999:blog-8185981925540107596.post-58905164618323266982010-09-07T16:13:00.000+05:302010-09-07T16:13:24.585+05:30Quick Workaround & Temporary fixesTheme > Change in portlet.vm for requirement to remove portlet title showing text "web content diplay"<br />
<br />
Summary : #if( $portlet_title =='Web Content Display')<br />
#else<br />
$theme.iconPortlet() $portlet_title<br />
#end<br />
<br />
2><br />
Change is custom.css to acomdate tab space for 'BiggerNameTab' tab in navigation <br />
<br />
Summary:<br />
#navigation ul li.parent-nav-item {<br />
text-align:center;<br />
width:109px;Abhishek Saxenahttp://www.blogger.com/profile/14474352252076953749noreply@blogger.com0tag:blogger.com,1999:blog-8185981925540107596.post-8922808422092426342010-09-01T20:24:00.000+05:302010-09-01T20:24:27.914+05:30Enable user creation with duplicate email idTo enable user creation with duplicate email -id<br />
<br />
If you don't have ant ext environment and still want to add this functionality leave me a note and I will send you steps for creating a separate jar and configurations to make your custom code work for your custom application.<br />
<br />
For extension environment -- Write a new class in ext-environment<br />
<br />
public class AbhishekUserLocalServiceImpl extends UserLocalServiceImpl <br />
Now override two validate methods and make following changes<br />
<br />
<b>1.</b> For method with signature <br />
protected void validate(long userId, String screenName, String emailAddress, String firstName, String lastName, String smsSn)<br />
<br />
<b>remove ----> throw new DuplicateUserEmailAddressException();</b><br />
<br />
from<i><br />
if (userPersistence.fetchByC_EA(<br />
user.getCompanyId(), emailAddress) != null) {<br />
<br />
throw new DuplicateUserEmailAddressException();<br />
}</i><br />
<b><br />
2.</b> For method with signature <br />
<br />
protected void validate(long companyId, long userId, boolean autoPassword, String password1,String password2, boolean autoScreenName, String screenName, String emailAddress, String firstName, String lastName, long[] organizationIds)<br />
<br />
<b>remove --->throw new DuplicateUserEmailAddressException();</b><br />
<br />
from<br />
<br />
if (Validator.isNotNull(emailAddress)) {<br />
User user = userPersistence.fetchByC_EA(companyId, emailAddress);<br />
<br />
if (user != null) {<br />
throw new DuplicateUserEmailAddressException();<br />
}<br />
}Abhishek Saxenahttp://www.blogger.com/profile/14474352252076953749noreply@blogger.com10tag:blogger.com,1999:blog-8185981925540107596.post-60070499265697129752010-08-30T20:54:00.004+05:302010-08-30T21:37:59.888+05:30Change existing context 'ROOT' with your chosen contextI have come across many instance in which developers want to change the existing context 'ROOT'<br /><br />Steps mentioned below is one easy way of doing it , however I have tried this on versions prior to 6.X . I will update post once I do it successfully on ver 6.X<br /><br /><span style="font-weight:bold;">1.</span> <a href="http://sourceforge.net/projects/lportal/files/Liferay%20Portal/">Download tomcat bundle </a> <br /><br />Using the tomcat bundles saves you from making unwanted changes ,if you start fresh portal installation over tomcat and then try to change the 'ROOT' context , you will have to change many files .<br /><br /><span style="font-weight:bold;">2.</span> Change the name of the existing context ROOT <br /> <br /> liferay-portal-5.2.3\tomcat-5.5.27\webapps\<span style="font-weight:bold;">ROOT</span> <br />to <br />liferay-portal-5.2.3\tomcat-5.5.27\webapps\<span style="font-weight:bold;">MyChosenContext</span><br /><br />MyChosenContext is the context name you want to use<br /><br /><span style="font-weight:bold;">2b .</span> Change the name of config file <br />\liferay-portal-5.2.3\tomcat-5.5.27\conf\Catalina\localhost\<span style="font-weight:bold;">ROOT.xml</span><br />to <br />\liferay-portal-5.2.3\tomcat-5.5.27\conf\Catalina\localhost\<span style="font-weight:bold;">MyChosenContext.xml</span><br /><br /><span style="font-weight:bold;">3.</span> create a new file named portal-ext.properties which will override portal.properties<br /><br />location -- liferay-portal-5.2.3\tomcat-5.5.27\webapps\ROOT\WEB-INF\classes\<span style="font-weight:bold;">portal-ext.properties</span><br /><br /><span style="font-weight:bold;">3b.</span> Change portal.ctx property or add in case of new installation <br /> portal.ctx=/MyChosenContext<br /><br />Snipet of property to be added to portal-ext.properties<br /><br />## Portal Context <br />## <br /> # <br /> # Set this property if you deploy the portal to another path besides root.<br /> # <br /> portal.ctx=/Abhishek Saxenahttp://www.blogger.com/profile/14474352252076953749noreply@blogger.com1tag:blogger.com,1999:blog-8185981925540107596.post-72623249560188942512010-07-19T19:31:00.007+05:302010-07-26T10:59:03.149+05:30Quick Tips<span style="font-weight:bold;">Tips</span><br />For using Liferay services in Web Content portlet Previously known as journal content portlet , we use LR services in templates<br />e.g. #set ($userLocalService = $serviceLocator.findService("com.liferay.portal.service.UserLocalService"))<br /><br />However at first attempt we encounter null which happens when we forget to update the property in portal-ext.properties.<br />Use of LR services are restricted by default in templates.<br />Following property has list of restricted variables<br />so change property from j<span style="font-weight:bold;">ournal.template.velocity.restricted.variables=serviceLocator<span style="font-style:italic;"></span></span><br /><span style="font-weight:bold;">journal.template.velocity.restricted.variables=<span style="font-style:italic;"></span></span><br />Once serviceLocator is available we can invoke the services to achieve desired results.<br />===================================================<br /><span style="font-weight:bold;">Get httpRequest within the portlet</span><br />HttpServletRequest httpRequest = PortalUtil.getHttpServletRequest(actionReq);<br /><br />===================================================<br /><span style="font-weight:bold;">CMS Template VM code for finding user and roles</span><br /><br />This code has been used by developers time and again I have used some different methods than existing approach to make it simpler.<br /><br />#set ($userLocalService = $serviceLocator.findService("com.liferay.portal.service.UserLocalService"))<br /> #set ($roleLocalService = $serviceLocator.findService("com.liferay.portal.service.RoleLocalService"))<br /> #set ($user_id = $request.getAttribute("USER_ID"))<br /> #set ($user = $userLocalService.getUserById($user_id))<br /> #set ($role = $roleLocalService.getRole($user.getCompanyId(),"sponsor"))<br /> #set ($hasUserRole = $roleLocalService.hasUserRole($user.getUserId(),$role.getRoleId()))<br /><br />======================================================Abhishek Saxenahttp://www.blogger.com/profile/14474352252076953749noreply@blogger.com4tag:blogger.com,1999:blog-8185981925540107596.post-21597819035416228162010-06-22T00:33:00.003+05:302010-06-22T00:54:59.425+05:30Using newly launched Liferay IDE 1.0IDE is awesome , it rocks .I was able to configure the IDE by following the instructions on IDE release wiki <a href="http://www.liferay.com/community/wiki/-/wiki/Main/Liferay%20IDE%20Installation%20Guide"> Installation Guide</a>, its easy to configure and if you have the resource downloaded you will be able to start developing portlets in no time. <br />Follow the getting started tutorial <a href="http://www.liferay.com/community/wiki/-/wiki/Main/Liferay+IDE+Getting+Started+Tutorial"> Getting started</a> <br />Watch demos if you need some help around creating portlets rely on demo videos <a href="http://www.liferay.com/community/wiki/-/wiki/Main/Liferay%20IDE%20Developing%20Liferay%20Portlets"> Portlet development video demo</a><br /><br />Feature like auto deployment ,hot sync are very helpful changes are reflected as soon as a change is made in the code , gone are the days when you needed to redeploy manually .GUI based wizard options are available for selecting portlet mode and Liferay portlet mode, choose category for portlets choose file location resource location etc. Truly wonderful.<br />I haven't encountered any bug yet , I will update the post once I use more features and encounter bugs.Abhishek Saxenahttp://www.blogger.com/profile/14474352252076953749noreply@blogger.com0tag:blogger.com,1999:blog-8185981925540107596.post-59852505749435665972010-06-16T12:05:00.004+05:302010-06-16T12:23:45.644+05:30Liferay IDE 1.0.0 ReleasedFor all Liferay enthusiast First version of IDE has been release based on Eclipse Galileo SR2.<br /><a href="http://www.liferay.com/community/wiki/-/wiki/Main/Liferay+IDE" target="_blank"> Click here to get IDE</a><br /><br />I will use it today and post some of the capabilities and reviewsAbhishek Saxenahttp://www.blogger.com/profile/14474352252076953749noreply@blogger.com0tag:blogger.com,1999:blog-8185981925540107596.post-90413363929342673852010-05-24T00:52:00.003+05:302010-05-24T00:58:40.339+05:30Liferay IDE 1.0I have seen the video demos and the IDE rocks, it has all the features a developer would love to see in first version<br /><br />The IDE has not been released yet. Once the next release candidate LR portal(6.0RC2) is released, then IDE will be rolled out as it will support version 6.0RC2 onwards<br /><br />In my next post I will detail the features once IDE is available for general use.<br /><br />I also plan for a post with detailed usage of OOB(out of the box) portlets and their configuration.Abhishek Saxenahttp://www.blogger.com/profile/14474352252076953749noreply@blogger.com0tag:blogger.com,1999:blog-8185981925540107596.post-56381099682766034472010-04-27T11:30:00.006+05:302012-04-06T09:22:03.232+05:30Liferay 5.2.3 and solr integration<div dir="ltr" style="text-align: left;" trbidi="on">I thought of writing this blog while I was trying to implement search indexing in clustered environment for liferay 5.2.3. I faced couple of problems and for resolution I had to read on way too many articles and blog to reach out to final implementation, so I though it would be nice to have everything in one place<br />
Solr provides search indexing option for clustered Liferay environment.<br />
<br />
version:<br />
solr-web-5.2.0.1.war --solr plugin<br />
Solr 1.4 --- Solr server<br />
<br />
Follow the steps provided<br />
<br />
1. Installing Solr<br />
<br />
1. Solr is a standalone search engine thus it will be installed separately from liferay create a directory named solr which will be called as SOLR_HOME going forward.<br />
2. Copy the content in solr folder from the downloaded solr installation bundle from http://lucene.apache.org/solr<br />
3. Create an environment variable SOLR_HOME which points to the solr installation directory.<br />
4. Once you have created the environment variable, you then can use it in your application server's start up configuration as a parameter to your JVM. This is configured differently per application server, but again, if you are using Tomcat, you would edit catalina.sh or catalina.bat and append the following to the $JAVA_OPTS variable:<br />
<br />
-Dsolr.solr.home=$SOLR_HOME<br />
<br />
5. Edit solrconfig.xml available at \solr\conf<br />
<br />
${solr.data.dir:C:\TomcatA\webapps\example\solr\data}<br />
<br />
change directory path for unix , I have given a windows path<br />
This data folder will contain all the index files (try not to delete these index files manually if you don't get proper result after first run, reindex again)<br />
<br />
Provide the path to a newly created directory which you want to hold the indexing data, after indexing files will be generated in this folder.<br />
<br />
<br />
2. Deploy solr war<br />
1. Copy solr.war to deploy folder of liferay from resource packet or download it directly from http://lucene.apache.org/solr<br />
<br />
<br />
3. Installing the Solr Plug-in<br />
<br />
<a href="http://www.liferay.com/downloads/liferay-portal/official-plugins/-/software_catalog/products/1188376?_98_redirect=%2Fdownloads%2Fliferay-portal%2Fofficial-plugins%2F-%2Fsoftware_catalog%2Fproducts%3F_98_tabs1TabsScroll%3D%26_98_keywords%3Dsolr%26_98_type%3D">Download plugin link</a><br />
<br />
1. Update the solr-spring.xml file available at \WEB-INF\classes\META-INF<br />
<br />
Change server URL e.g. http://{domain}:8181/solr/<br />
<br />
<br />
2. Copy the update archive file in deploy folder of liferay<br />
<b><br />
2b(IMP). Extract the file schema.xml from the plug-in. This xml file describes how the fields will be indexed to the Solr index and it should be located in the docroot/WEB-INF/conf folder. Copy this file to $SOLR_HOME/conf</b><br />
<br />
3. Go to the Admin Portlet in Liferay 5.1 or Control panel in higher versions. Click the Server tab and then click the Execute button next to Reindex all search indexes. It may take a while, but Liferay will begin sending indexing requests to Solr for execution. When the process is complete, Solr will have a complete search index of your site, and will be running independently of all of your Liferay nodes.<br />
<br />
References:<br />
<br />
Solr > http://lucene.apache.org/solr<br />
<br />
Liferay: Liferay.com<br />
<br />
Tip: To check if Solr server is working perfectly hit the following URL after restart<br />
To check if indexing is working fine check the data folder in Solr server new <br />
index files must have formed there.<br />
<br />
http://{domain}/{port}/solr/admin<br />
<br />
Change Log: Changes have been made in LuceneUtil class for making it compatible to search users in control panel. If you have older version you need to delete a line and add a snippet and repackage you portalutil jar, check out the below mentioned link for changes.<br />
<br />
<a href="http://www.liferay.com/community/forums/-/message_boards/message/4100407?_19_redirect=%2Fcommunity%2Fforums%2F-%2Fmessage_boards%2Fsearch%3F_19_redirect%3D%252Fcommunity%252Fforums%252F-%252Fmessage_boards%252Fcategory%252F243728%26_19_breadcrumbsCategoryI">For overcoming the issue in user search in control panel</a><br />
<br />
<br />
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-16109209-2']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script><br />
</div>Abhishek Saxenahttp://www.blogger.com/profile/14474352252076953749noreply@blogger.com2