Sunday, December 14, 2014

Liferay Remote Staging through HTTPS

Tomcat could serve SSL content properly.

As an Http client, the JVM could accept a self-signed (untrusted) certificate. If you've ever come across a website that asked you if you want to accept an untrusted certificate, this is basically the same thing, but there's no UI to import certificates into the JVM.

  • Create a self-signed certificate using keytool. The following command generates a certificate keystore with one self-signed certificate inside it with filename keystore. I used the password "changeit", but you can use whatever you want. Just make sure the Tomcat configuration uses the same.



[code language="html"]

keytool -genkey -alias tomcat -keyalg RSA -keystore keystore

[/code]

 

 

  • Configure Tomcat to use the certificate / keystore that we just generated. This tells Tomcat to send the certificate whenever you access the server @ https://host:8443. In server.xml look for the SSL connector:



[code language="xml"]

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"  
maxThreads="150" scheme="https" secure="true"  
clientAuth="false" sslProtocol="TLS"    
keystoreFile="/apps/…/tomcat/keystore"   
 keystorePass="changeit" />

[/code]

 

  • Import the certificate into the JVM'skeystore. This tells the JVM that this is a "trusted" certificate so that whenLiferay makeshttps requests to Tomcat it will proceed without errors

    • Export the key from the keystore you generated in step 1. This extracts the certificate so that you can import it into the JVM's store





[code language="html"]
keytool -export -alias tomcat -keypass changeit  -file server.crt -keystore keystore
<pre>[/code]


  •  Import the cert into the JVM. "cacerts" is the filename of the JVM keystore. The path will be different on Windows (should be in %JAVA_HOME%/jre/lib/security/cacerts).


 

[code language="html"]
keytool -import -alias tomcat -file server.crt -keypass changeit -keystore JAVA_HOME/jre/lib/security/cacerts
[/code]

 

  • Check to see that the certificate was properly imported.



[code language="html"]
keytool -list -keypass changeit –keystoreJAVA_HOME/jre/lib/security/cacerts
[/code]

 

portal-ext.properties settings

 

[code language="html"]
##
## Web Server
##

    #
    # Set the preferred protocol.
    #
    #web.server.protocol=http
     web.server.protocol=https


##
## Session
##

    #
    # Set this to true to invalidate the session when a user logs into the
    # portal. This helps prevents phishing. Set this to false if you need the
    # guest user and the authenticated user to have the same session.
    #
    # Set this to false if the property "company.security.auth.requires.https"
    # is set to true and you want to maintain the same credentials across HTTP
    # and HTTPS sessions.
    #
    #session.enable.phishing.protection=true
    session.enable.phishing.protection=false

    
    #
    # Set this shared secret to secure communications from one portal to another
    # via the tunneling servlet. This portal will refuse communications from
    # other portals that do not share the same secret.
    #
    # Secrets must be 16, 32, or 64 characters long.
    #
   tunneling.servlet.shared.secret=1234567890123456


##
## Tunnel Servlet
##
    #
    # See the properties "main.servlet.hosts.allowed" and
    # "main.servlet.https.required" on how to protect this servlet.
    #
    tunnel.servlet.hosts.allowed=127.0.0.1,SERVER_IP,192.168.0.16
    tunnel.servlet.https.required=true
    
##
## Axis Servlet
##
    #
    # See the properties "main.servlet.hosts.allowed" and
    # "main.servlet.https.required" on how to protect this servlet.
    #
        axis.servlet.hosts.allowed=127.0.0.1,SERVER_IP,192.168.0.16
        axis.servlet.https.required=true
    
#
# TunnelingServletAuthVerifier
    #
    #auth.verifier.TunnelingServletAuthVerifier.hosts.allowed=255.255.255.255
    auth.verifier.TunnelingServletAuthVerifier.hosts.allowed=


[/code]

Once setting is completed please start the server

Remote Staging

Liferay Remote Staging through HTTP

Liferay provides two different ways to setup the staging

  1. Local Live


When Local staging is enabled then clone is created as site pages containing the content and portlet data. Original site becomes live and clone will become staging environment.


      2. Remote Live

When Remote staging is enabled then there will an establishment of connection between current site and site on remote Liferay server. Remote site becomes live environment and current site becomes staging environment.



Remote Live Staging


When you enable Remote Live staging, the remote site becomes the live environment and the current site becomes the staging environment. The remote (live) Liferay server and the local (staging) Liferay server should be completely separate systems. They should not, for example, share the same the database. When Remote Live staging is enabled, all the necessary information is transferred over the network connecting the two servers.

Before a site administrator can enable Remote Live staging for a site, the remote Liferay server must be added to the current Liferay server’s list of allowed servers. The current Liferay server must also be added to the remote Liferay server’s list of allowed servers. You also need to specify an authentication key to be shared by your current and your remote server and enable each Liferay server’s tunneling servlet authentication verifier. You can make all of these configurations in your Liferay servers’ portal-ext.properties files. Your first step should be to add the following lines to your current Liferay server’s portal-ext.properties file:

 

Steps need to be followed:

  • add below mentioned properties to current Liferay server’s portal-ext.properties file:



[code language="html"]

##
##Staging Server setting        
##
    # Set this shared secret to secure communications from one portal to another
    # via the tunneling servlet. This portal will refuse communications from
    # other portals that do not share the same secret.
    #
    # Secrets must be 16, 32, or 64 characters long.
    #
tunneling.servlet.shared.secret=1234567890123456

##
## Tunnel Servlet
##
    #
    # See the properties "main.servlet.hosts.allowed" and
    # "main.servlet.https.required" on how to protect this servlet.
    #
    tunnel.servlet.hosts.allowed=127.0.0.1,SERVER_IP,192.168.0.16
    
##
## Axis Servlet
##
    #
    # See the properties "main.servlet.hosts.allowed" and
    # "main.servlet.https.required" on how to protect this servlet.
    #
    axis.servlet.hosts.allowed=127.0.0.1,SERVER_IP, 192.168.0.16
    
#
# TunnelingServletAuthVerifier
#   
auth.verifier.TunnelingServletAuthVerifier.hosts.allowed=

[/code]


  • Same settings need to be replicate in both thenodes (Liferay node1 and node2).

  • Restart both Servers.


Liferay’s use of a pre-shared key between your staging and production environments helps secure the remote publication process. It also removes the need to send the publishing user’s password to the remote server for web service authentication. Using a pre-shared key allows Liferay to create an authorization context (permission checker) from the provided email address, screen name, or user ID without the user’s password. You can specify any value for the tunneling.servlet.shared.secret property; the value for your current server just has to match the value of your remote server. Remember to restart both Liferay servers after making these portal properties updates. After restarting, log back in to your local Liferay portal instance as a site administrator. Then navigate to the Site Administration → Configuration page for your site. Next, click on Site Settings in the left menu and then on Staging listed under the advanced tab. Select Remote Live under Staging Type and additional options appear.

 

[gallery size="full" type="square" ids="453"]

Friday, August 22, 2014

Liferay 6.1.2-ce Definitions

A

achievement - liferay-social_6_1_0.dtd
achievement-class - liferay-social_6_1_0.dtd
action-key - liferay-resource-action-mapping_6_1_0.dtd
action-timeout - liferay-portlet-app_6_1_0.dtd
action-url-redirect - liferay-portlet-app_6_1_0.dtd
active - liferay-portlet-app_6_1_0.dtd
activity - liferay-social_6_1_0.dtd
activity-type - liferay-social_6_1_0.dtd
add-default-resource - liferay-portlet-app_6_1_0.dtd
after-filter - liferay-hook_6_1_0.dtd
ajaxable - liferay-portlet-app_6_1_0.dtd
asset-renderer-factory - liferay-portlet-app_6_1_0.dtd
atom-collection-adapter - liferay-portlet-app_6_1_0.dtd
author - liferay-plugin-package_6_1_0.dtd, liferay-plugin-repository_6_1_0.dtd, liferay-service-builder_6_1_0.dtd
autopropagated-parameters - liferay-portlet-app_6_1_0.dtd

B

before-filter - liferay-hook_6_1_0.dtd

C

category - liferay-display_6_1_0.dtd
change-log - liferay-plugin-package_6_1_0.dtd, liferay-plugin-repository_6_1_0.dtd
color-scheme - liferay-look-and-feel_6_1_0.dtd
color-scheme-images-path - liferay-look-and-feel_6_1_0.dtd
column - liferay-service-builder_6_1_0.dtd
community-defaults - liferay-resource-action-mapping_6_1_0.dtd
company-excludes - liferay-look-and-feel_6_1_0.dtd
company-id - liferay-look-and-feel_6_1_0.dtd
company-includes - liferay-look-and-feel_6_1_0.dtd
company-limit - liferay-look-and-feel_6_1_0.dtd
compatibility - liferay-look-and-feel_6_1_0.dtd
configuration-action-class - liferay-portlet-app_6_1_0.dtd
configuration-path - liferay-portlet-app_6_1_0.dtd
contribution-limit - liferay-social_6_1_0.dtd
contribution-value - liferay-social_6_1_0.dtd
control-panel-entry-category - liferay-portlet-app_6_1_0.dtd
control-panel-entry-class - liferay-portlet-app_6_1_0.dtd
control-panel-entry-weight - liferay-portlet-app_6_1_0.dtd
counter - liferay-social_6_1_0.dtd
cron - liferay-portlet-app_6_1_0.dtd
cron-trigger-value - liferay-portlet-app_6_1_0.dtd
css-class - liferay-look-and-feel_6_1_0.dtd
css-class-wrapper - liferay-portlet-app_6_1_0.dtd
css-path - liferay-look-and-feel_6_1_0.dtd
custom - liferay-layout-templates_6_1_0.dtd, liferay-look-and-feel_6_1_0.dtd
custom-attributes-display - liferay-portlet-app_6_1_0.dtd
custom-class - liferay-portlet-app_6_1_0.dtd
custom-jsp-dir - liferay-hook_6_1_0.dtd
custom-jsp-global - liferay-hook_6_1_0.dtd
custom-user-attribute - liferay-portlet-app_6_1_0.dtd

D

default-cs - liferay-look-and-feel_6_1_0.dtd
deployment-setting - liferay-plugin-repository_6_1_0.dtd
deployment-settings - liferay-plugin-package_6_1_0.dtd, liferay-plugin-repository_6_1_0.dtd
dispatcher - liferay-hook_6_1_0.dtd
display - liferay-display_6_1_0.dtd
download-url - liferay-plugin-repository_6_1_0.dtd

E

enabled - liferay-social_6_1_0.dtd
entity - liferay-service-builder_6_1_0.dtd
exception - liferay-service-builder_6_1_0.dtd
exceptions - liferay-service-builder_6_1_0.dtd

F

facebook-integration - liferay-portlet-app_6_1_0.dtd
file-storage - liferay-theme-loader_6_1_0.dtd
finder - liferay-service-builder_6_1_0.dtd
finder-column - liferay-service-builder_6_1_0.dtd
footer-portal-css - liferay-portlet-app_6_1_0.dtd
footer-portal-javascript - liferay-portlet-app_6_1_0.dtd
footer-portlet-css - liferay-portlet-app_6_1_0.dtd
footer-portlet-javascript - liferay-portlet-app_6_1_0.dtd
friendly-url-mapper-class - liferay-portlet-app_6_1_0.dtd
friendly-url-mapping - liferay-portlet-app_6_1_0.dtd
friendly-url-routes - liferay-portlet-app_6_1_0.dtd

G

generated-parameter - liferay-friendly-url-routes_6_1_0.dtd
group-excludes - liferay-look-and-feel_6_1_0.dtd
group-id - liferay-look-and-feel_6_1_0.dtd
group-includes - liferay-look-and-feel_6_1_0.dtd
group-limit - liferay-look-and-feel_6_1_0.dtd
guest-defaults - liferay-resource-action-mapping_6_1_0.dtd
guest-unsupported - liferay-resource-action-mapping_6_1_0.dtd

H

header-portal-css - liferay-portlet-app_6_1_0.dtd
header-portal-javascript - liferay-portlet-app_6_1_0.dtd
header-portlet-css - liferay-portlet-app_6_1_0.dtd
header-portlet-javascript - liferay-portlet-app_6_1_0.dtd
hook - liferay-hook_6_1_0.dtd

I

icon - liferay-portlet-app_6_1_0.dtd, liferay-social_6_1_0.dtd
ignored-parameter - liferay-friendly-url-routes_6_1_0.dtd
images-path - liferay-look-and-feel_6_1_0.dtd
implicit-parameter - liferay-friendly-url-routes_6_1_0.dtd
include - liferay-portlet-app_6_1_0.dtd
increment - liferay-social_6_1_0.dtd
indexer-class - liferay-portlet-app_6_1_0.dtd
indexer-class-name - liferay-hook_6_1_0.dtd
indexer-post-processor - liferay-hook_6_1_0.dtd
indexer-post-processor-impl - liferay-hook_6_1_0.dtd
init-param - liferay-hook_6_1_0.dtd
instanceable - liferay-portlet-app_6_1_0.dtd

J

javascript-path - liferay-look-and-feel_6_1_0.dtd

L

language-key - liferay-social_6_1_0.dtd
language-properties - liferay-hook_6_1_0.dtd
large-image-url - liferay-plugin-package_6_1_0.dtd, liferay-plugin-repository_6_1_0.dtd
layout-cacheable - liferay-portlet-app_6_1_0.dtd
layout-manager - liferay-resource-action-mapping_6_1_0.dtd
layout-template - liferay-layout-templates_6_1_0.dtd, liferay-look-and-feel_6_1_0.dtd
layout-templates - liferay-layout-templates_6_1_0.dtd, liferay-look-and-feel_6_1_0.dtd
license - liferay-plugin-package_6_1_0.dtd, liferay-plugin-repository_6_1_0.dtd
licenses - liferay-plugin-package_6_1_0.dtd, liferay-plugin-repository_6_1_0.dtd
liferay-portlet-app - liferay-portlet-app_6_1_0.dtd
liferay-social - liferay-social_6_1_0.dtd
liferay-version - liferay-plugin-package_6_1_0.dtd, liferay-plugin-repository_6_1_0.dtd
liferay-versions - liferay-plugin-package_6_1_0.dtd, liferay-plugin-repository_6_1_0.dtd
log-activity - liferay-social_6_1_0.dtd
long-description - liferay-plugin-package_6_1_0.dtd, liferay-plugin-repository_6_1_0.dtd
look-and-feel - liferay-look-and-feel_6_1_0.dtd

M

maximize-edit - liferay-portlet-app_6_1_0.dtd
maximize-help - liferay-portlet-app_6_1_0.dtd
model-name - liferay-resource-action-mapping_6_1_0.dtd, liferay-social_6_1_0.dtd
model-resource - liferay-resource-action-mapping_6_1_0.dtd
module-id - liferay-plugin-package_6_1_0.dtd, liferay-plugin-repository_6_1_0.dtd

N

name - liferay-plugin-package_6_1_0.dtd, liferay-plugin-repository_6_1_0.dtd, liferay-portlet-app_6_1_0.dtd, liferay-social_6_1_0.dtd
namespace - liferay-service-builder_6_1_0.dtd

O

open-search-class - liferay-portlet-app_6_1_0.dtd
order - liferay-service-builder_6_1_0.dtd
order-column - liferay-service-builder_6_1_0.dtd
overridden-parameter - liferay-friendly-url-routes_6_1_0.dtd
owner-defaults - liferay-resource-action-mapping_6_1_0.dtd
owner-type - liferay-social_6_1_0.dtd

P

page-url - liferay-plugin-package_6_1_0.dtd, liferay-plugin-repository_6_1_0.dtd
param-name - liferay-hook_6_1_0.dtd
param-value - liferay-hook_6_1_0.dtd
parent-struts-path - liferay-portlet-app_6_1_0.dtd
participation-limit - liferay-social_6_1_0.dtd
participation-value - liferay-social_6_1_0.dtd
pattern - liferay-friendly-url-routes_6_1_0.dtd
permission-propagator - liferay-portlet-app_6_1_0.dtd
permissions - liferay-resource-action-mapping_6_1_0.dtd
plugin-package - liferay-plugin-package_6_1_0.dtd, liferay-plugin-repository_6_1_0.dtd
plugin-repository - liferay-plugin-repository_6_1_0.dtd
poller-processor-class - liferay-portlet-app_6_1_0.dtd
pop-message-listener-class - liferay-portlet-app_6_1_0.dtd
pop-up-print - liferay-portlet-app_6_1_0.dtd
portal-properties - liferay-hook_6_1_0.dtd
portlet - liferay-display_6_1_0.dtd, liferay-portlet-app_6_1_0.dtd
portlet-data-handler-class - liferay-portlet-app_6_1_0.dtd
portlet-layout-listener-class - liferay-portlet-app_6_1_0.dtd
portlet-name - liferay-portlet-app_6_1_0.dtd, liferay-resource-action-mapping_6_1_0.dtd
portlet-ref - liferay-resource-action-mapping_6_1_0.dtd
portlet-resource - liferay-resource-action-mapping_6_1_0.dtd
portlet-url-class - liferay-portlet-app_6_1_0.dtd
preferences-company-wide - liferay-portlet-app_6_1_0.dtd
preferences-owned-by-group - liferay-portlet-app_6_1_0.dtd
preferences-unique-per-layout - liferay-portlet-app_6_1_0.dtd
private-request-attributes - liferay-portlet-app_6_1_0.dtd
private-session-attributes - liferay-portlet-app_6_1_0.dtd
processor-class - liferay-social_6_1_0.dtd
property - liferay-social_6_1_0.dtd
property-key - liferay-portlet-app_6_1_0.dtd

R

recommended-deployment-context - liferay-plugin-package_6_1_0.dtd, liferay-plugin-repository_6_1_0.dtd
reference - liferay-service-builder_6_1_0.dtd
remoteable - liferay-portlet-app_6_1_0.dtd
render-timeout - liferay-portlet-app_6_1_0.dtd
render-weight - liferay-portlet-app_6_1_0.dtd
resource - liferay-resource-action-mapping_6_1_0.dtd
resource-action-mapping - liferay-resource-action-mapping_6_1_0.dtd
restore-current-view - liferay-portlet-app_6_1_0.dtd
role-link - liferay-portlet-app_6_1_0.dtd
role-mapper - liferay-portlet-app_6_1_0.dtd
role-name - liferay-layout-templates_6_1_0.dtd, liferay-look-and-feel_6_1_0.dtd, liferay-portlet-app_6_1_0.dtd
roles - liferay-layout-templates_6_1_0.dtd, liferay-look-and-feel_6_1_0.dtd
root-path - liferay-look-and-feel_6_1_0.dtd
route - liferay-friendly-url-routes_6_1_0.dtd
routes - liferay-friendly-url-routes_6_1_0.dtd

S

scheduler-description - liferay-portlet-app_6_1_0.dtd
scheduler-entry - liferay-portlet-app_6_1_0.dtd
scheduler-event-listener-class - liferay-portlet-app_6_1_0.dtd
scopeable - liferay-portlet-app_6_1_0.dtd
screenshot - liferay-plugin-package_6_1_0.dtd, liferay-plugin-repository_6_1_0.dtd
screenshot-path - liferay-layout-templates_6_1_0.dtd
screenshots - liferay-plugin-package_6_1_0.dtd, liferay-plugin-repository_6_1_0.dtd
service - liferay-hook_6_1_0.dtd
service-builder - liferay-service-builder_6_1_0.dtd
service-builder-import - liferay-service-builder_6_1_0.dtd
service-impl - liferay-hook_6_1_0.dtd
service-type - liferay-hook_6_1_0.dtd
servlet-filter - liferay-hook_6_1_0.dtd
servlet-filter-impl - liferay-hook_6_1_0.dtd
servlet-filter-mapping - liferay-hook_6_1_0.dtd
servlet-filter-name - liferay-hook_6_1_0.dtd
setting - liferay-look-and-feel_6_1_0.dtd, liferay-plugin-package_6_1_0.dtd, liferay-plugin-repository_6_1_0.dtd
settings - liferay-look-and-feel_6_1_0.dtd, liferay-plugin-repository_6_1_0.dtd
short-description - liferay-plugin-package_6_1_0.dtd, liferay-plugin-repository_6_1_0.dtd
show-portlet-access-denied - liferay-portlet-app_6_1_0.dtd
show-portlet-inactive - liferay-portlet-app_6_1_0.dtd
simple - liferay-portlet-app_6_1_0.dtd
simple-trigger-value - liferay-portlet-app_6_1_0.dtd
site-member-defaults - liferay-resource-action-mapping_6_1_0.dtd
social-activity-interpreter-class - liferay-portlet-app_6_1_0.dtd
social-request-interpreter-class - liferay-portlet-app_6_1_0.dtd
standard - liferay-layout-templates_6_1_0.dtd, liferay-look-and-feel_6_1_0.dtd
struts-action - liferay-hook_6_1_0.dtd
struts-action-impl - liferay-hook_6_1_0.dtd
struts-action-path - liferay-hook_6_1_0.dtd
struts-path - liferay-portlet-app_6_1_0.dtd
supports - liferay-resource-action-mapping_6_1_0.dtd
system - liferay-portlet-app_6_1_0.dtd

T

tag - liferay-plugin-package_6_1_0.dtd, liferay-plugin-repository_6_1_0.dtd
tags - liferay-plugin-package_6_1_0.dtd, liferay-plugin-repository_6_1_0.dtd
template-extension - liferay-look-and-feel_6_1_0.dtd
template-path - liferay-layout-templates_6_1_0.dtd, liferay-look-and-feel_6_1_0.dtd
templates-path - liferay-look-and-feel_6_1_0.dtd
theme - liferay-look-and-feel_6_1_0.dtd
theme-loader - liferay-theme-loader_6_1_0.dtd
themes-path - liferay-theme-loader_6_1_0.dtd
thumbnail-path - liferay-layout-templates_6_1_0.dtd, liferay-look-and-feel_6_1_0.dtd
thumbnail-url - liferay-plugin-package_6_1_0.dtd, liferay-plugin-repository_6_1_0.dtd
time-unit - liferay-portlet-app_6_1_0.dtd
trigger - liferay-portlet-app_6_1_0.dtd
tx-required - liferay-service-builder_6_1_0.dtd
type - liferay-plugin-package_6_1_0.dtd, liferay-plugin-repository_6_1_0.dtd
types - liferay-plugin-package_6_1_0.dtd, liferay-plugin-repository_6_1_0.dtd

U

url-encoder-class - liferay-portlet-app_6_1_0.dtd
url-pattern - liferay-hook_6_1_0.dtd
use-default-template - liferay-portlet-app_6_1_0.dtd
user-principal-strategy - liferay-portlet-app_6_1_0.dtd

V

value - liferay-social_6_1_0.dtd
version - liferay-look-and-feel_6_1_0.dtd
virtual-path - liferay-look-and-feel_6_1_0.dtd, liferay-portlet-app_6_1_0.dtd

W

wap-template-path - liferay-layout-templates_6_1_0.dtd, liferay-look-and-feel_6_1_0.dtd
wap-theme - liferay-look-and-feel_6_1_0.dtd
webdav-storage-class - liferay-portlet-app_6_1_0.dtd
webdav-storage-token - liferay-portlet-app_6_1_0.dtd
workflow-handler - liferay-portlet-app_6_1_0.dtd

X

xml-rpc-method-class - liferay-portlet-app_6_1_0.dtd

Thursday, June 5, 2014

Liferay: Weather Time and date Portlet

This app provides a visual indication of weather as well as time-zone across different location based on preferences.
By default,Bangalore location weather and Asia/Calcutta(Time zone) specific date and time is set.

for more information and to download this app check this link  [embed]https://www.liferay.com/marketplace/-/mp/application/36344131[/embed]

LIFERAY CERTIFIED PROFESSIONAL

Certificate

Friday, May 30, 2014

Liferay Ant deploy target issue (Task cannot continue because ECJ is not installed)

Buildfile: opt\6.2.0 GA1\plugins\portlets\sample-portlet\build.xml

BUILD FAILED
opt\6.2.0 GA1\plugins\portlets\sample-portlet\build.xml:5: The following error occurred while executing this line:
opt\6.2.0 GA1\plugins\portlets\build-common-portlet.xml:5: The following error occurred while executing this line:
opt\6.2.0 GA1\plugins\build-common-plugin.xml:5: The following error occurred while executing this line:
opt\6.2.0 GA1\plugins\build-common.xml:96: .

Task cannot continue because ECJ is not installed.

ECJ was automatically installed. Please rerun your task.

Total time: 552 milliseconds

 

This Issue we can overcome using below 2 solution

Solution 1:

Step 1: Click Window menu in Eclipse IDE --> Select Preferences
Step 2: Select the Ant in left hand side menu --> click Runtime.
Step 3: Select Global Entries and click Add External JARs.
Step 4: Navigate to


              %LIFERAY-HOME%/tomcat-xxx/lib --> select ecj-xxx.jar


OR


  %PLUGIN-SDK_HOME%/lib --> select ecj.jar


            and click OK.



Solution 2:

Add the below code in "build.username.properties" in plugin sdk

Property available in build.properties


     javac.compiler=modern
# javac.compiler=org.eclipse.jdt.core.JDTCompilerAdapter

Thursday, March 27, 2014

Liferay 6.1 portal properties

Portal Properties


Table of Contents



Reference link :

http://docs.liferay.com/portal/6.1/propertiesdoc/portal.properties.html

Liferay 6.1 System Properties

System Properties


 

Start your application server with the system property"system.properties.load" set to true to load the external file called system.properties. This is given as a convenient way to ensure all properties are set for deployment. When the server starts, the portal will load system.properties and then system-ext.properties.

Start your application server with the system property"system.properties.final" set to true if the properties of system.properties override all similar command line properties. If set to false, the properties of system.properties will be set if and only if those properties are not currently set.

Some application servers require you to set the "file.encoding" and"user.timezone" on startup regardless of system.properties because the application server reads these properties before system.properties is ever loaded.

 

Table of Contents



 

References Link:

http://docs.liferay.com/portal/6.1/propertiesdoc/system.properties.html

Liferay 6.1 plugins package properties

Liferay Plugin Package 6.1 Properties


Table of Contents



 

Reference Links;

http://docs.liferay.com/portal/6.1/propertiesdoc/liferay-plugin-package_6_1_0.properties.html

 

Wednesday, February 12, 2014

To by-pass authentication token for non-logged in user (Liferay Error: Invalid authentication token)

Problem : When we are facing issue like "Invalid authentication token" during submission of form, such as given below log info.

INFO  [PortalImpl:4873] Current URL /web/guest/bla-bla?p_auth=YoaGw6u5&p_p_id=portlet_id&p_p_lifecycle=1&p_p_state=normal&p_p_mo
de=view&p_p_col_id=column-2&p_p_col_count=1&_portlet_id_javax.portlet.action=addAction generates exception: Invalid authentication token
INFO  [PortalImpl:4890] Invalid authentication token

 

Solution :  We can resolve this in three ways.

For Custom/Plugin portlet, use the below code in action class

public class ActionNamePortlet extends MVCPortlet {

//Ignore code

/**
     * To by-pass authentication token for non-logged in user.
     * Error: Invalid authentication token
     * @return
     */
    protected boolean isCheckMethodOnProcessAction() {
        return CHECK_METHOD_ON_PROCESS_ACTION;
    }

    private static final boolean CHECK_METHOD_ON_PROCESS_ACTION = false;

}

OR

 

Place the below code in plugin portelt portlet.xml file

<init-param>
            <name>check-auth-token</name>
            <value>false</value>
</init-param>

OR

Note : This can be used for plugin portlet as well as Liferay OOTB portelt.

Place the below code in liferay portal-ext.propertes.

#
    # Set a list of comma delimited portlet ids that will not be checked for an
    # authentication token.
    #
    auth.token.ignore.portlets=82,portlet_id

 

 

If we have a requirement to disable "authentication token security checks" for portal, then place the below code in portal-ext.properties file.

Note : Not suggesting to go for this solution for specific portlet

##
## Authentication Token
##

    #
    # Set this to true to enable authentication token security checks. The
    # checks can be disabled for specific actions via the property
    # "auth.token.ignore.actions" or for specific portlets via the init
    # parameter "check-auth-token" in portlet.xml.
    #
    auth.token.check.enabled=false