Friday 9 December 2016

Liferay DXP: Technical Specifications

 Deployment Compatibility

 
Operating Systems
  •     Linux (CentOS, RHEL, SUSE, Ubuntu, and others)
  •     Unix (AIX, HP-UX, Solaris, and others)
  •     Windows Server
  •     Mac OS X

Public & Private Clouds
  •     Liferay DXP is deployable to the cloud and virtualized environments.

Application Servers
  •     JBoss EAP
  •     Resin
  •     tcServer
  •     Tomcat
  •     WebLogic
  •     WebSphere
  •     Wildfly
Databases
  •     DB2
  •     MariaDB
  •     MySQL
  •     Oracle
  •     PostgreSQL
  •     SQL Server
  •     Sybase

Platfrom Details 

Performance Scalablity

  • Clustering at any combination of tiers (presentation, service, business logic, and database)
  • Advanced caching (i.e., Ehcache)
  • Elasticsearch platform support
  • Performance monitoring support (JMX, Java profiling, etc.)
Security
  •    Government-grade encryption such as: DES, MD5, SHA and RSA.
  •    Pluggable authentication
  •    Email verification
  •    Granular permissioning
  •    LDAP authentication
  •    Session management
Developer Languages
  •      Java
  •     Groovy
  •     Ruby
  •     Python
  •     Scala
 Web Services
  •     SOAP
  •     JSON
  •     RMI
  •     Spring Remoting
  •     WebDAV
Identity Management Support
  •     LDAP authentication
  •     SAML producer / consumer OAuth
  •     Oracle Access Manager
  •     Novell Identity Manager
  •     Sun Identity Manager
  •     OpenSSO / OpenAM
  •     SiteMinder
  •     Tivoli Access Manager
  •     Facebook standards
JavaScript Frameworks
  •     AlloyUI
  •     GWT
  •     JQuery
  •     JSF
  •     Metal.js
  •     Vaadin
              ...and others
Frontend Frameworks
  •     AlloyUI
  •     Application Display Templates
  •     Device detection
  •     TagLibs
  •     Twitter Bootstrap
Backend Frameworks
  •     Asset
  •     Cache
  •     Comments
  •     Data handlers
  •     File storage
  •     Membership policies
  •     Message bus
  •     Permissions
  •     Ratings
  •     Recycle bin
  •     Scheduler
  •     Scripting
  •     ServiceContext
  •     Upgrade
  •     Workflow
Theme Developer Languages
  •     Freemarker
  •     Velocity
Other Standards/Technologies
  •     AJAX
  •     iCalendar & Microformat
  •     JSR-168 (Portlet)
  •     JSR-286 (Portlet 2.0)
  •     WSRP 1 & 2
  •     JSR-127 (JSF)
  •     JSR-314 (JSF 2.0,2.1), JSR-344 (JSF 2.2)
  •     JSR-170 (Content Repository)
  •     Spring 3.0 & AOP
  •     CMIS 1.0/2.0
  •     OpenSearch 1.1
  •     OpenSocial 2.5
  •     Hibernate collection of projects
  •     OSGi Core 6.0
  •     SAML 2.0
  •     OAuth 1.1

Content Management Features

Content Repository

  • Multi-repository support
  • Customizable document types
  • Metadata per document type
  • Microsoft Office© integration
  • CMIS support
  • Check in/check out
  • Content previews
  • Content versioning
  • Define workflows per document type
  • Mobile/desktop file synchronization using Liferay Sync

Sites Publishing

  • Dynamic and static site templates
  • Drag and drop site maps
  • Sitemap protocol support
  • Friendly page URLs
  • Remote server staging and scheduling
  • Multiple site variations/versions
  • Faceted search
  • Recycle bin
  • User customizable pages

Content Creation

  • AlloyEditor
  • Templating: FreeMarker or Velocity
  • Global content sharing between sites
  • Content sharing in site hierarchy

Themes & Layout

  • JavaScript framework: AlloyUI 3.0
  • CSS framework: Twitter Bootstrap
  • HTML 5.0 compliant
  • Responsive mobile theme
  • Multiple page layout templates

Mobile

  • Mobile previews within browser
  • Mobile responsive theme
  • Mobile device recognition
  • Eclipse-based Mobile SDK

Colaboration & Social Features

Wikis, Blogs & Message Board Blogs

  • AlloyEditor
  • Ratings / Comments
  • RSS feeds
  • Categories / Tags
  • Related assets
  • Reader subscriptions
  • Recent blogs lists
  • Badge icon for social activity
  • Social bookmarks
  • Inappropriate content flagging

Wikis

  • AlloyEditor
  • Versioning & reversion
  • Creole, HTML or MediaWiki syntax
  • Attach files
  • Threaded comments

Message Board

  • Recent Posts List, My Posts List
  • Reader Subscriptions
  • Anonymous Posting
  • Attach Files
  • Support for Categories & Threads Reorganization
  • Inappropriate Content Flagging

Calendar

  • AJAX-based interface
  • iCal and microformats support
  • Personal and group
  • Task lists
  • Resource scheduling
  • Email, IM, or SMS event reminders

 Alerts/Annoucements

  • Broadcast news or status
  • Scheduled start/stop
  • Site or role based targeting

Saturday 3 December 2016

Planning of Migrating from Liferay 6.x to Liferay DXP


Liferay Digital Experience Platform (DXP) gives you a full view of the customer in order to create and manage consistent customer experiences across mobile, social, desktop, in store and other touch based devices. DXP prepares you to adapt quickly to future digital innovations.

Liferay DXP adopted new architecture with latest features in the web technologies. Due to architectural changes there will be many challenges while upgrade/migrate to latest Liferay DXP from Liferay 6.x.

Top 5 things to think before doing migration to Liferay DXP.

Backup existing data:-

“Backup of existing data is must before doing any migration”.

Migrating from Liferay 6.x to Liferay DXP, the first thing is to take proper backup from the current running server. The backup will help you revert back to older state, if anything doesn’t work properly.

Backup need to be taken for the below listed items.

·         Database schema

·         Files from data folder (which contain document and media files)

·         Custom configurations in the properties files. (portal-ext.properties)

·         PortalPreferences which are associated with portlets.

Note: In Liferay DXP PortalPreferences_ has been removed and replaced by a modular OSGi-based configuration framework.

Database upgrade:-

Once the database backup is done, we need to upgrade the database with respect to Liferay DXP.

Database comes first everywhere which you must require to migrate to make it compatible with the new version.

Process of doing database upgrade are as follows:-

·         Disable indexing so that indexer doesn’t try to run during the upgrade.

Add below .cfg file in following server path - [Liferay Home]/osgi/configs

com.liferay.portal.search.configuration.IndexStatusManagerConfiguration.cfg with following content :- indexReadOnly=true.

Note: By adding the above file you will avoid indexing and save time during the upgrade process. Once you have upgraded your portal, remove that property or set it to false so that you can index all objects from control panel.

Note: Make sure all your database indexes have been applied correctly. A missing index can cause an upgrade to really slow down.
                                                                          
Upgrade to Java 8:-

Liferay DXP comes with Java 8 as default Java Runtime.

Java 8 is quite mature at this point, and brings a multitude of new features that improve the quality of life of Java developers significantly, it will improve both overall performance and maintainability.

While applications written for Java 7 can be run on Java 8 (in most cases), it is recommended to budget time into your migration plan to allow for each of your applications to be ported and validated using Java 8.

Change in Deployment Process:-

Since Liferay architecture of Liferay DXP is changed, it has adopted OSGi framework container which is based on modules based application. Due to OSGi container the deployment process has been changed based on different approaches.

Deployment process with different approaches.

WARs are traditional web apps to which we are all accustomed. WARs are not recommended in Liferay DXP because you lose access to any service that has been deployed to the OSGi container, though they can still access Liferay’s core services.

Bundles/Modules are plugins you’ve converted to an OSGi bundle. They are just simple

Java JARs with OSGi metadata. Bundles can only be deployed into the OSGi container.

Bundles cannot access services deployed as WARs besides Liferay’s core services. This is the recommended approach for all new development and will be the approach Liferay takes for all new development.

WABs are web archive bundles. If you deploy a WAR to the OSGi container, Liferay will convert the WAR into a WAB. This will give you all the benefits of a bundle without doing the conversion.

This is the recommended approach for deploying legacy applications built for older versions of Liferay.

The Liferay auto deploy directory now deploys to the OSGi container by default. The only way to deploy to your web application’s deploy folder is to do this manually through a direct deploy.

Many of our tools will directly deploy to the OSGi container.

Note: If you plan to cluster your servers, OSGi bundles may provide an additional hurdle if you rely on your app server’s administrative tools to do cluster deployment as those tools are not able to deploy to our OSGi container. As a current workaround, Liferay provide with Cluster Deployment Helper. This tool will take any number of files and bundle them into a WAR. The WAR will copy the files into Liferay’s deploy folder when it is deployed and then uninstall itself. You can then use the WAR with any app server administration tool.

Search:-

Liferay DXP comes with Solr and embedded Elasticsearch search engine. Elasticsearch will not be supported for production server. There is a choice Elasticsearch (non-embedded) or Slor as your search provider.

Basically you will be required separate search server to maintain the whole Liferay portal to work smoothly.

Tuesday 22 November 2016

Liferay 7 (DXP) Module Framework (OSGI)


I am sure you would be happy to see Liferay in some new way of development rather than just what you are doing currently.

Yes, I am talking about Liferay 7.


I know very few people aware that LIFERAY is going to launch the new version of Liferay (Liferay 7) very soon(Maybe early months of 2016).

Friends,

Be ready to see some good changes in Liferay 7 as I heard and attend some workshop from Liferay 7 comes up with OSGi based Module Framework.

Liferay’s module framework makes it easier than ever for developers to create Liferay applications and to Liferay Customization!

How it would be helpful to Liferay Developer :
  •     Easier to manage dependencies across module or plugin level.
  •     And the most interesting feature is,Modules can be installed and uninstalled during running   server itself and no need to bounce the server.
  •     Module versioning will helpful developers to reduce/stop class conflict for individual version of modules
  •     Deployment would be quite easy once you understand the build and deployment process through blade tool
  •     Service contract is loosely coupled. It means services can be published and consume from service registry.
  •     It's very fast due to small and secure with small package/bundle.
  •     One more interesting stuff here is, during development you don't need to be dependent on Liferay SDK until and unless your module or individual project follows Liferay's OSGi standards.
  •     In short, this new framework will give very good flexibility to a developer for the development and will increase productivity as well.

Liferay 6.2 and Liferay 7

You would be thinking that how the old plugin creation approach works using Liferay 7. So yes
Liferay 7 actually supports both the implementation still for backward compatibility.

  •     You can still create the portlet in older fashion the way which you were doing with Liferay 6.2 by following JSR-286 standards and creating WAR files for deployment.

  •     With Liferay 7, It simply creates a jar file as it follows module framework architecture. and this is the recommended approach for your new application development.

But yes here you would have to be familiar with OSGi standards and understand the module and component framework here.

Module:

Module is something which is group of Java classes, other optional resources, and a MANIFEST.MF file, packaged together as into a  single JAR file. Liferay 7 uses three modules/bundles.
Modules can have multiple components.

Component:

Component is nothing but implementation of interface like the way we were doing with *LocalServiceImpl class in older fashion. So here what you need to do is, you just will have to load components through annotations in implementation class.These loaded/declared components would be part of modules.

Here Lifecycle of modules and component will be handled through Liferay's OSGi based module framework.