Portal Properties

Table of Contents

Properties


Top of Page

Properties Override


Specify where to get the overridden properties. Updates should not be made on portal.properties or on portal-bundle.properties, but in portal-ext.properties.

The default read order is: portal.properties, portal-bundle.properties, portal-ext.properties, and then portal-setup-wizard.properties.

Defaults:

    include-and-override=portal-bundle.properties
    include-and-override=${liferay.home}/portal-bundle.properties
    include-and-override=portal-ext.properties
    include-and-override=${liferay.home}/portal-ext.properties
    include-and-override=portal-setup-wizard.properties
    include-and-override=${liferay.home}/portal-setup-wizard.properties


Each portal instance can have its own overridden property file following the convention portal-companyWebId.properties. To enable this feature, set the "company-id-properties" system property to true.

To enable:

     java ... -Dcompany-id-properties=true

The read order will now be: portal.properties, then portal-ext.properties, and then portal-liferay.com.properties.

Note that not all properties can have different values per company. This functionality is only available for legacy reasons. The preferred way to configure a portal instance is through the Control Panel.

Defaults:

    include-and-override=portal-${easyconf:companyId}.properties
    include-and-override=${liferay.home}/portal-${easyconf:companyId}.properties


Additional property files can be used by setting the "external-properties" system property.

A common use case is to keep legacy property values when upgrading to newer versions of Liferay. To enable:

     java ... -Dexternal-properties=portal-legacy-5.1.properties

The read order will now be: portal.properties, then portal-ext.properties, and then portal-legacy-5.1.properties.

Defaults:

    include-and-override=${external-properties}
    include-and-override=${liferay.home}/${external-properties}


Top of Page

Liferay Home


Specify the Liferay home directory.

Defaults:

    liferay.home=${resource.repositories.root}


This property is available for backwards compatibility. Please set the property "liferay.home" instead.

Defaults:

    resource.repositories.root=${default.liferay.home}


Top of Page

Portal Context


Set the application server's protocol. Lucene will use it to load the index from the cluster when the hostname and port are not detected on the first request. Note that this property refers to the application server's protocol, and not the web server's as specified in the property "web.server.protocol".

Defaults:

    portal.instance.protocol=

Examples:

    portal.instance.protocol=http
    portal.instance.protocol=https


Set the application server's hostname and port for the protocol specified in the property "portal.instance.protocol". Lucene will use it to load the index from the cluster when the hostname and port are not detected on the first request. Note that this property must be used with the property "portal.instance.protocol" and it refers to the application server's hostname and port, not the web server's port as specified in the properties "web.server.http.port" and "web.server.https.port".

Defaults:

    portal.instance.inet.socket.address=

Examples:

    portal.instance.inet.socket.address=localhost:8080
    portal.instance.inet.socket.address=localhost:8443


Set this property if the application server is served behind a proxy and a prefix needs to be added to the portal servlet context path. This prefix will also be added to static resources served by layout templates, portlets, and themes.

Defaults:

    portal.proxy.path=


Top of Page

Schema


Set this to true to automatically create tables and populate with default data if the database is empty.

Defaults:

    schema.run.enabled=true


Set this to true to automatically upgrade the database when a module's build number has been increased since the last deployment.

Defaults:

    schema.module.build.auto.upgrade=false


Top of Page

Upgrade


Set this to true to disable database transaction management during upgrades. This forces autocommit, which will speed up the upgrade process.

Defaults:

    upgrade.database.transactions.disabled=true


Top of Page

Verify


Input a list of comma delimited class names that implement com.liferay.portal.verify.VerifyProcess. These classes will run on startup to verify and fix any integrity problems found in the database. Please be aware that this may make modifications directly to the database.

Defaults:

    verify.processes=com.liferay.portal.verify.VerifyProcessSuite


Specify the frequency for verifying the integrity of the database.

Constants in VerifyProcess:

     public static final int ALWAYS = -1;
     public static final int NEVER = 0;
     public static final int ONCE = 1;

Defaults:

    verify.frequency=1


Set this to true to disable database transaction management during verification. This forces autocommit, which will speed up the verify process.

Defaults:

    verify.database.transactions.disabled=true


Set this to true to disable patch level checking on portal-impl and portal-kernel JAR files. This is not recommended as a mixed patch level can cause unexpected behavior.

Defaults:

    verify.patch.levels.disabled=false


Configure this threshold to indicate when to execute certain com.liferay.portal.verify.VerifyProcess tasks concurrently. Each VerifyProcess implementation governs what it may concurrently execute.

Defaults:

    verify.process.concurrency.threshold=5


Top of Page

Auto Deploy


Input a list of comma delimited class names that implement com.liferay.portal.kernel.deploy.auto.AutoDeployListener. These classes are used to process the auto deployment of WARs.

Defaults:

    auto.deploy.listeners=\
        com.liferay.portal.deploy.auto.ExtAutoDeployListener,\
        com.liferay.portal.deploy.auto.HookAutoDeployListener,\
        com.liferay.portal.deploy.auto.LayoutTemplateAutoDeployListener,\
        com.liferay.portal.deploy.auto.ModuleAutoDeployListener,\
        com.liferay.portal.deploy.auto.PortletAutoDeployListener,\
        com.liferay.portal.deploy.auto.ThemeAutoDeployListener,\
        com.liferay.portal.deploy.auto.WebAutoDeployListener


Set this to true to enable auto deploy of layout templates, portlets, and themes.

Defaults:

    auto.deploy.enabled=true


Set the directory to scan for layout templates, portlets, and themes to auto deploy.

Defaults:

    auto.deploy.deploy.dir=${liferay.home}/deploy


Set the directory where auto deployed WARs are copied to. The application server or servlet container must know to listen on that directory. Different containers have different hot deploy paths. For example, Tomcat listens on "${catalina.base}/webapps" whereas JBoss listens on "${jboss.home.dir}/deploy". Set a blank directory to automatically use the application server specific directory.

Defaults:

    auto.deploy.dest.dir=
    auto.deploy.default.dest.dir=../webapps
    auto.deploy.glassfish.dest.dir=${com.sun.aas.instanceRoot}/autodeploy
    auto.deploy.jboss.dest.dir=${jboss.home.dir}/standalone/deployments
    auto.deploy.jboss.dest.dir[5]=${jboss.server.home.dir}/deploy
    auto.deploy.jetty.dest.dir=${jetty.home}/webapps
    auto.deploy.jonas.dest.dir=${jonas.base}/deploy
    auto.deploy.resin.dest.dir=${resin.home}/webapps
    auto.deploy.tomcat.dest.dir=${catalina.base}/webapps
    auto.deploy.weblogic.dest.dir=${env.DOMAIN_HOME}/autodeploy
    auto.deploy.websphere.dest.dir=${env.USER_INSTALL_ROOT}/wsadmin-deploy
    auto.deploy.wildfly.dest.dir=${jboss.home.dir}/standalone/deployments


Set the interval in milliseconds on how often to scan the directory for changes.

Defaults:

    auto.deploy.interval=3000


Set this to true if deployed WARs are unpacked. Set this to false if your application server has concurrency issues with deploying large WARs.

Defaults:

    auto.deploy.unpack.war=true


Set this to true if plugins should automatically copy Commons Logging.

Defaults:

    auto.deploy.copy.commons.logging=true


Set this to true if plugins should automatically copy Log4j.

Defaults:

    auto.deploy.copy.log4j=true


Set this to true if you want the deployer to rename portlet.xml to portlet-custom.xml. This is only needed when deploying the portal on WebSphere 6.1.x with a version before 6.1.0.7 because WebSphere's portlet container will try to process a portlet at the same time that Liferay is trying to process a portlet.

Defaults:

    auto.deploy.custom.portlet.xml=false


Set this to 1 if you are using JBoss' PrefixDeploymentSorter. This will append a 1 in front of your WAR name. For example, if you are deploying a portlet called test-portlet.war, it will deploy it to 1test-portlet.war. JBoss now knows to load this portlet after the other WARs have loaded. However, it will remove the 1 from the context path.

Modify /server/default/conf/jboss-service.xml. See org.jboss.deployment.scanner.PrefixDeploymentSorter.

Defaults:

    auto.deploy.jboss.prefix=


Set the Glassfish settings to enable JSR 88 application deployment.

Defaults:

    auto.deploy.glassfish.jee.deployment.enabled=false
    auto.deploy.glassfish.jee.dm.id=deployer:Sun:AppServer::localhost:4848
    auto.deploy.glassfish.jee.dm.user=admin
    auto.deploy.glassfish.jee.dm.passwd=adminadmin
    auto.deploy.glassfish.jee.df.classname=com.sun.enterprise.deployapi.SunDeploymentFactory


Set the path to Tomcat's configuration directory. This property is used to auto deploy exploded WARs. Tomcat context XML files found in the auto deploy directory will be copied to Tomcat's configuration directory. The context XML file must have a docBase attribute that points to a valid WAR directory.

Defaults:

    auto.deploy.tomcat.conf.dir=../conf/Catalina/localhost


Set the path to Tomcat's global class loader. This property is only used by Tomcat in a standalone environment.

Defaults:

    auto.deploy.tomcat.lib.dir=../common/lib/ext


Set the options used when calling the AdminApp.install command.

See http://pic.dhe.ibm.com/infocenter/wasinfo/v8r0/topic/com.ibm.websphere.express.doc/info/exp/ae/rxml_adminapp.html#rxml_adminapp__cmd9 for more information.

Defaults:

    auto.deploy.websphere.wsadmin.app.manager.install.options=-appname ${auto.deploy.websphere.wsadmin.app.name} -contextroot /${plugin.servlet.context.name} -usedefaultbindings


Set the options used when calling the AdminApp.list command.

See http://pic.dhe.ibm.com/infocenter/wasinfo/v8r0/topic/com.ibm.websphere.express.doc/info/exp/ae/rxml_adminapp.html#rxml_adminapp__cmd9 for more information.

Defaults:

    auto.deploy.websphere.wsadmin.app.manager.list.options=


Set the options used when calling the AdminApp.update command.

See http://pic.dhe.ibm.com/infocenter/wasinfo/v8r0/topic/com.ibm.websphere.express.doc/info/exp/ae/rxml_adminapp.html#rxml_adminapp__cmd9 for more information.

Defaults:

    auto.deploy.websphere.wsadmin.app.manager.update.options=-contents ${auto.deploy.dest.dir}/${plugin.servlet.context.name}.war -contextroot /${plugin.servlet.context.name} -operation update -usedefaultbindings


WebSphere 6 and 7 do not support the ability to hot deploy a WAR. The portal will attempt to use the wsadmin script to install a hot deployed plugin at runtime if this property is set. The wsadmin script uses this property to query the WebSphere application manager. Set this property to a blank value to disable this feature.

Defaults:

    auto.deploy.websphere.wsadmin.app.manager.query=type=ApplicationManager,process=server1,*

Examples:

    auto.deploy.websphere.wsadmin.app.manager.query=


Set the suffix to be added to the plugin servlet context name in order to identify the WebSphere process it is deployed to. Leave it blank to use the plugin servlet context name only.

Defaults:

    auto.deploy.websphere.wsadmin.app.name.suffix=


Set the properties file name to use when invoking the wsadmin command. Configure this property to change the behavior of the wsadmin command, such as connection port or protocol.

Defaults:

    auto.deploy.websphere.wsadmin.properties.file.name=


Top of Page

Hot Deploy

Defaults:

    hot.deploy.dependency.management.enabled=true


Input a list of comma delimited class names that implement com.liferay.portal.kernel.deploy.hot.HotDeployListener. These classes are used to process the deployment and undeployment of WARs at runtime.

The listeners are invoked in the order defined by this property. PluginPackageHotDeployListener must always be invoked first. SpringHotDeployListener must always be invoked before ServletContextListenerHotDeployListener. MessagingHotDeployListener must always be invoked last.

Defaults:

    hot.deploy.listeners=\
        com.liferay.portal.deploy.hot.PluginPackageHotDeployListener,\
        \
        com.liferay.portal.deploy.hot.SpringHotDeployListener,\
        \
        com.liferay.portal.deploy.hot.ServletContextListenerHotDeployListener,\
        \
        com.liferay.portal.deploy.hot.ExtHotDeployListener,\
        com.liferay.portal.deploy.hot.HookHotDeployListener,\
        com.liferay.portal.deploy.hot.JSONWebServiceHotDeployListener,\
        com.liferay.portal.deploy.hot.LayoutTemplateHotDeployListener,\
        com.liferay.portal.deploy.hot.PortletHotDeployListener,\
        com.liferay.portal.deploy.hot.SocialHotDeployListener,\
        com.liferay.portal.deploy.hot.ThemeHotDeployListener,\
        com.liferay.portal.deploy.hot.ThemeLoaderHotDeployListener,\
        \
        com.liferay.portal.deploy.hot.OSGiHotDeployListener,\
        \
        com.liferay.portal.deploy.hot.MessagingHotDeployListener


Top of Page

Hot Undeploy


Set this to true to enable undeploying plugins.

Defaults:

    hot.undeploy.enabled=true


Set the undeploy interval in milliseconds on how long to wait for the undeploy process to finish.

Defaults:

    hot.undeploy.interval=0


Set this to true to undeploy a plugin before deploying a new version. This property will only be used if the property "hot.undeploy.enabled" is set to true.

Defaults:

    hot.undeploy.on.redeploy=false


Top of Page

Plugin


Input a list of comma delimited supported plugin types.

Defaults:

    plugin.types=portlet,theme,layout-template,hook,web


Input a list of Liferay plugin repositories separated by \n characters.

Defaults:

    plugin.repositories.trusted=
    plugin.repositories.untrusted=


Set this property to false to avoid receiving on screen notifications when there is a new version of an installed plugin.

Defaults:

    plugin.notifications.enabled=false


Input a list of plugin packages IDs separated by \n characters. Administrators won't be notified when a new version of these plugins are available. The IDs are of the form groupId/artifactId. You can also end the ID with an asterisk to match any ID that starts with the previous character.

Examples:

    plugin.notifications.packages.ignored=liferay/sample-jsp-portlet


Top of Page

Portlet


Set this property to set the default virtual path for all hot deployed portlets. See liferay-portlet-app_7_1_0.dtd and the virtual-path element for more information.

Defaults:

    portlet.virtual.path=


Set this property to true to validate portlet.xml against the portlet schema.

Defaults:

    portlet.xml.validate=true


Portlets that have configured liferay-portlet.xml with the element "add-default-resource" set to true will allow those portlets to be dynamically added to any page by any user. This is useful (and necessary) for some portlets that need to be dynamically added to a page, but it can also pose a security risk because it also allows any user to do it.

Set this property to true to add a security check around this behavior. If set to true, then portlets can only be dynamically added to a page if it contains a proper security token. This security token is automatically passed when using a portlet URL from one portlet to another portlet.

Modify the property "portlet.add.default.resource.check.whitelist" to whitelist certain portlets from this security check.

The security check utilizes the implementation set in the property "auth.token.impl".

Defaults:

    portlet.add.default.resource.check.enabled=true


Set a list of comma delimited portlet IDs that will bypass the security check set in the property "portlet.add.default.resource.check.enabled".

Defaults:

    portlet.add.default.resource.check.whitelist=\
        com_liferay_calendar_web_portlet_CalendarPortlet,\
        com_liferay_login_web_portlet_FastLoginPortlet,\
        com_liferay_login_web_portlet_LoginPortlet,\
        com_liferay_portlet_configuration_css_web_portlet_PortletConfigurationCSSPortlet,\
        com_liferay_portlet_configuration_web_portlet_PortletConfigurationPortlet,\
        com_liferay_product_navigation_simulation_web_portlet_SimulationPortlet,\
        com_liferay_staging_bar_web_portlet_StagingBarPortlet


Input a list of comma delimited struts actions that will bypass the security check set in the property "portlet.add.default.resource.check.enabled".

Defaults:

    portlet.add.default.resource.check.whitelist.actions=


Set a list of comma delimited portlet IDs that will bypass the checks at first login (pages like terms of use, update password, password reminder query, etc.).

Such a portlet can also be embedded in a theme.

Keep in mind that this can be risky, because an attacker can issue POST requests on these portlets, even when there is no portlet embedded in a theme.

Defaults:

    portlet.interrupted.request.whitelist=


Input a list of comma delimited struts actions that will bypass the checks at first login (pages like terms of use, update password, password reminder query, etc.).

Defaults:

    portlet.interrupted.request.whitelist.actions=


Input a regular expression to ban paths that cannot be used to serve resources in portlets.

Defaults:

    portlet.resource.id.banned.paths.regexp=.*[\\\\/](?:META-INF|WEB-INF)[\\\\/].*


Set this property to true to enable portlet session replication. This is only needed when session replication is enabled on the application server.

Defaults:

    portlet.session.replicate.enabled=false


Top of Page

Portlet Config


Set this property to true to show the portlet ID as a subtitle of the portlet configuration modal.

Defaults:

    portlet.config.show.portlet.id=false


Input a list of portlet resources that will be loaded.

Defaults:

    portlet.configs=\
        /WEB-INF/portlet-custom.xml,\
        /WEB-INF/portlet-ext.xml,\
        /WEB-INF/liferay-portlet.xml,\
        /WEB-INF/liferay-portlet-ext.xml,\
        /WEB-INF/web.xml


Top of Page

Portlet Container


Set this property to true to restrict portlet communication via request attributes. See the property "layout.parallel.render.enable" on how that property affects this property.

Defaults:

    portlet.container.restrict=true


Top of Page

Portlet Coordination


This property controls how cross layout portlet URLs are invoked. When set to "render", only render URLs will be allowed invocation across different layouts. When set to "all", all portlet URL types will be allowed invocation.

Defaults:

    portlet.cross.layout.invocation.mode=render


Set this property to specify how events are distributed. If the value is "layout-set", then events will be distributed to all portlets contained in a layout set. If the value is "layout", then events will be distributed to all portlets that are present in a layout.

Defaults:

    portlet.event.distribution=layout


Set this property to specify how public render parameters are distributed. If the value is "layout-set", then public render parameters will be distributed to all portlets contained in a layout set. This will only work correctly if the property "layout.default.p_l_reset" is set to false. If the value is "layout", then public render parameters will be distributed to all portlets that are present in a layout.

Defaults:

    portlet.public.render.parameter.distribution=layout


Top of Page

Portlet Display Templates


Set the location of the default error content for portlet display templates for each language type.

Defaults:

    portlet.display.templates.error[ftl]=com/liferay/portlet/portletdisplaytemplate/dependencies/portlet_display_template_error.ftl
    portlet.display.templates.error[vm]=com/liferay/portlet/portletdisplaytemplate/dependencies/portlet_display_template_error.vm


Set the location of the default help content for portlet display templates for each language type.

Defaults:

    portlet.display.templates.help[ftl]=com/liferay/portlet/portletdisplaytemplate/dependencies/portlet_display_template_help.ftl
    portlet.display.templates.help[vm]=com/liferay/portlet/portletdisplaytemplate/dependencies/portlet_display_template_help.vm


Top of Page

Portlet Filters


Input a list of portlet filters that will be applied to all portlets.

Defaults:

    portlet.filters.system=com.liferay.portlet.ScriptDataPortletFilter


Top of Page

Portlet Preferences


PortletPreferencesFactoryImpl caches the portlet preferences' XML content, where the XML content is used as a cache key. In some cases, the content can be very large (i.e. larger than 1 mb). This property defines a threshold to use XML content as key only below this threshold. Above the threshold, an SHA-1 hash will be generated, but that's an expensive operation, so this property should be specified wisely. The default value is 1 kb.

Defaults:

    portlet.preferences.cache.key.threshold.size=1024


Set this property to false to break PLT.17.1's restriction to allow portlet preferences to be stored during render phase. This property exists for backwards compatibility with legacy portlets.

Defaults:

    portlet.preferences.strict.store=true


Top of Page

Theme


Set this property to true to load the theme's merged CSS files for faster loading for production.

Set this property to false for easier debugging for development. You can also disable fast loading by setting the URL parameter "css_fast_load" to "0" when the property "theme.css.fast.load.check.request.parameter" is also set to true.

Defaults:

    theme.css.fast.load=true


Set this property to false to ignore the URL parameter "css_fast_load". See the property "theme.css.fast.load".

Defaults:

    theme.css.fast.load.check.request.parameter=false


Set this property to true to load the theme's merged image files for faster loading for production.

Set this property to false for easier debugging for development. You can also disable fast loading by setting the URL parameter "images_fast_load" to "0" when the property "theme.images.fast.load.check.request.parameter" is also set to true.

Defaults:

    theme.images.fast.load=true


Set this property to false to ignore the URL parameter "images_fast_load". See the property "theme.images.fast.load".

Defaults:

    theme.images.fast.load.check.request.parameter=false


Set this property to true to allow directly invoked JSPs to be overridden by a different version of the JSP that exists in a theme.

Defaults:

    theme.jsp.override.enabled=false


Set the theme's shortcut icon.

Defaults:

    theme.shortcut.icon=favicon.ico


Set this property to set the default virtual path for all hot deployed themes. See liferay-look-and-feel_7_1_0.dtd and the virtual-path element for more information.

Defaults:

    theme.virtual.path=


Set this with an absolute path to specify where imported theme files from a LAR will be stored. This path will override the file-storage path specified in liferay-theme-loader.xml.

Defaults:

    theme.loader.storage.path=


Themes can be imported via LAR files. Set this to true if imported themes should use a new theme ID on every import. This will ensure that a copy of the old theme is preserved in the theme loader storage path. However, this also means that a lot of themes that are no longer used remain in the file system. It is recommended that you set this to false.

Defaults:

    theme.loader.new.theme.id.on.import=false


Set this to true to decorate portlets by default.

Defaults:

    theme.portlet.decorate.default=true


Set this to true to expose sharing icons for portlets by default.

Defaults:

    theme.portlet.sharing.default=false


Top of Page

Resource Actions


Input a list of comma delimited resource action configurations that will be read from the class path.

Defaults:

    resource.actions.configs=\
        META-INF/resource-actions/default.xml,\
        resource-actions/default.xml


This should only be set to false when it is called by Service Builder outside of an application server or servlet container.

Defaults:

    resource.actions.read.portlet.resources=true


Top of Page

Model Hints


Input a list of comma delimited model hints configurations.

Defaults:

    model.hints.configs=\
        META-INF/portal-model-hints.xml,\
        classpath*:META-INF/ext-model-hints.xml,\
        classpath*:META-INF/portlet-model-hints.xml


Top of Page

Model Tree Path


Set the batch size of database query results returned during the tree rebuilding operation. If set to -1, the results will not be paginated and may result in a larger memory footprint.

Defaults:

    model.tree.rebuild.query.results.batch.size=10000


Top of Page

Spring


Input a list of comma delimited Spring configurations. These will be loaded after the bean definitions specified in the contextConfigLocation parameter in web.xml.

Defaults:

    spring.configs=\
        META-INF/base-spring.xml,\
        \
        META-INF/util-spring.xml,\
        \
        META-INF/executor-spring.xml,\
        META-INF/fabric-spring.xml,\
        \
        META-INF/messaging-core-spring.xml,\
        META-INF/messaging-misc-spring.xml,\
        \
        META-INF/asset-spring.xml,\
        META-INF/cluster-spring.xml,\
        META-INF/comment-spring.xml,\
        META-INF/company-provider-spring.xml,\
        META-INF/document-library-spring.xml,\
        META-INF/layout-spring.xml,\
        META-INF/model-listener-spring.xml,\
        META-INF/notifications-spring.xml,\
        META-INF/poller-spring.xml,\
        META-INF/prefs-spring.xml,\
        META-INF/repository-spring.xml,\
        META-INF/search-spring.xml,\
        META-INF/security-spring.xml,\
        META-INF/service-configurator-spring.xml,\
        META-INF/social-spring.xml,\
        META-INF/workflow-spring.xml,\
        \
        META-INF/counter-spring.xml,\
        META-INF/mail-spring.xml,\
        META-INF/portal-spring.xml,\
        META-INF/portlet-container-spring.xml,\
        META-INF/staging-spring.xml,\
        META-INF/virtual-layouts-spring.xml,\
        \
        META-INF/monitoring-spring.xml,\
        \
        #META-INF/dynamic-data-source-spring.xml,\
        \
        classpath*:META-INF/ext-spring*.xml


Input a list of comma delimited Spring infrastructure configurations. These will be loaded after the module framework is initialized but before it is started.

Defaults:

    spring.infrastructure.configs=\
        META-INF/infrastructure-spring.xml,\
        \
        META-INF/counter-infrastructure-spring.xml,\
        #META-INF/dynamic-data-source-infrastructure-spring.xml,\
        META-INF/hibernate-spring.xml


Input a list of comma delimited Spring configurations for plugins. These will be loaded before portalContextConfigLocation parameter in portlet web.xml and spring.configs in service.properties

Defaults:

    spring.portlet.configs=\
        classpath*:com/liferay/portal/spring/context/xml/*-spring.xml


Set the bean name for the Liferay data source.

Defaults:

    spring.hibernate.data.source=liferayDataSource


Set the bean name for the Liferay session factory.

Defaults:

    spring.hibernate.session.factory=&liferaySessionFactory


Set this property to true to verify that the session factory is owned by the proper transaction manager. Set this property to false to turn off verification for better performance.

Defaults:

    spring.hibernate.session.factory.verify=true


Set the list of portal classes that will be preloaded by the PreloadClassloader and therefore available to a plugin's Hibernate session factory.

Defaults:

    spring.hibernate.configuration.proxy.factory.preload.classloader.classes=\
        javassist.util.proxy.MethodHandler,\
        javassist.util.proxy.ProxyObject,\
        javassist.util.proxy.RuntimeSupport,\
        org.hibernate.proxy.HibernateProxy,\
        org.hibernate.proxy.LazyInitializer


Set the list of portal classes that will be preloaded by the PreloadClassloader and therefore available to a plugin's Hibernate session factory.

Defaults:

    spring.hibernate.session.factory.preload.classloader.classes=\
        org.hibernate.engine.jdbc.WrappedBlob


Set this property to false to manually open and close sessions.

Defaults:

    spring.hibernate.session.delegated=true


Top of Page

Hibernate


Input a list of comma delimited Hibernate configurations.

Defaults:

    hibernate.configs=\
        META-INF/mail-hbm.xml,\
        META-INF/portal-hbm.xml,\
        classpath*:META-INF/ext-hbm.xml


Liferay will automatically detect the Hibernate dialect in com.liferay.portal.spring.PortalHibernateConfiguration. Set this property to manually override the automatically detected dialect.

Examples:

    hibernate.dialect=


Set the Hibernate connection release mode. You should not modify this unless you know what you're doing. The default setting works best for Spring managed transactions. See the method buildSessionFactory in class org.springframework.orm.hibernate3.LocalSessionFactoryBean and search for the phrase "on_close" to understand how this works.

Examples:

    hibernate.connection.release_mode=on_close


Set the JDBC batch size to improve performance.

If you're using Hypersonic, you SHOULD set the batch size to 0 as a workaround for a logging bug in the Hypersonic driver. See LPS-5426 for more information.

If you're using Oracle 9i, you MUST set the batch size to 0 as a workaround for a hanging bug in the Oracle driver. See LEP-1234 for more information.

Defaults:

    hibernate.jdbc.batch_size=20

Examples:

    hibernate.jdbc.batch_size=0


Set other miscellaneous Hibernate properties.

Defaults:

    hibernate.jdbc.use_scrollable_resultset=true
    hibernate.bytecode.use_reflection_optimizer=true
    hibernate.show_sql=false


Use the classic query factory until WebLogic and Hibernate 3 can get along. See http://www.hibernate.org/250.html#A23 for more information.

Defaults:

    hibernate.query.factory_class=org.hibernate.hql.classic.ClassicQueryTranslatorFactory


Set this property to true to enable Hibernate cache monitoring. See LPS-2056 for more information.

Defaults:

    hibernate.generate_statistics=false


Set the regexp pattern to filter a Hibernate session factory imported class name before continuing with classloader resolving.

This is used to fix the infamous Hibernate ReflectHelper.classForName() synchronization problem. For more details, see the Hibernate issues HHH-1810, HHH-4959, HHH-10746, and HHH-11246.

If no regexp pattern is set, classloader resolving is skipped, resulting in the class name being resolved against the configuration's imports map.

The wildcard pattern ".*" disables this optimization, reverting back to the original Hibernate behavior.

Any other pattern resolves the class name against the configuration's imports map first. If it can not be resolved, it attempts to match this pattern. If it matches, continue with classloader resolving; otherwise, return null as unable to resolve.

Defaults:

    hibernate.session.factory.imported.class.name.regexp=


Top of Page

JDBC


Set the JNDI name to lookup the JDBC data source. If none is set, then the portal will attempt to create the JDBC data source based on the properties prefixed with "jdbc.default.".

Examples:

    jdbc.default.jndi.name=jdbc/LiferayPool


Set the properties used to create the JDBC data source. These properties will only be read if the property "jdbc.default.jndi.name" is not set.

The default settings are configured for an in-memory database called Hypersonic that is not recommended for production use. Please change the properties to use another database.

To configure the portal to use one data source for read calls and another data source for read-write calls, follow these steps:

1. Similar to the settings prefixed with "jdbc.default.", create a set of properties prefixed with "jdbc.read." to handle read calls and another set of properties prefixed with "jdbc.write." to handle read-write calls.

2. Add "jdbc.read.jndi.name" and "jdbc.write.jndi.name" properties that specify the data source JNDI names.

3. Add dynamic-data-source-spring.xml to the property "spring.configs" and dynamic-data-source-infrastructure-spring.xml to the property "spring.infrastructure.configs"


DB2

Examples:

    jdbc.default.driverClassName=com.ibm.db2.jcc.DB2Driver
    jdbc.default.url=jdbc:db2://localhost:50000/lportal:deferPrepares=false;fullyMaterializeInputStreams=true;fullyMaterializeLobData=true;progresssiveLocators=2;progressiveStreaming=2;
    jdbc.default.username=db2admin
    jdbc.default.password=lportal


Hypersonic

Defaults:

    jdbc.default.driverClassName=org.hsqldb.jdbc.JDBCDriver
    jdbc.default.url=jdbc:hsqldb:${liferay.home}/data/hypersonic/lportal;hsqldb.write_delay=false
    jdbc.default.username=sa
    jdbc.default.password=


MariaDB

Examples:

    jdbc.default.driverClassName=org.mariadb.jdbc.Driver
    jdbc.default.url=jdbc:mariadb://localhost/lportal?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false
    jdbc.default.username=
    jdbc.default.password=


MySQL

Examples:

    jdbc.default.driverClassName=com.mysql.jdbc.Driver
    jdbc.default.url=jdbc:mysql://localhost/lportal?characterEncoding=UTF-8&dontTrackOpenResources=true&holdResultsOpenOverStatementClose=true&useFastDateParsing=false&useUnicode=true
    jdbc.default.username=
    jdbc.default.password=


Oracle

Examples:

    jdbc.default.driverClassName=oracle.jdbc.OracleDriver
    jdbc.default.url=jdbc:oracle:thin:@localhost:1521:xe
    jdbc.default.username=lportal
    jdbc.default.password=lportal


P6Spy

Examples:

    jdbc.default.driverClassName=com.p6spy.engine.spy.P6SpyDriver
    jdbc.default.url=jdbc:mysql://localhost/lportal?characterEncoding=UTF-8&dontTrackOpenResources=true&holdResultsOpenOverStatementClose=true&useFastDateParsing=false&useUnicode=true
    jdbc.default.username=
    jdbc.default.password=


PostgreSQL

Examples:

    jdbc.default.driverClassName=org.postgresql.Driver
    jdbc.default.url=jdbc:postgresql://localhost:5432/lportal
    jdbc.default.username=sa
    jdbc.default.password=


SQL Server

Examples:

    jdbc.default.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
    jdbc.default.url=jdbc:sqlserver://localhost;databaseName=lportal
    jdbc.default.username=sa
    jdbc.default.password=


Sybase

Examples:

    jdbc.default.driverClassName=com.sybase.jdbc4.jdbc.SybDriver
    jdbc.default.url=jdbc:sybase:Tds:localhost:5000/lportal
    jdbc.default.username=sa
    jdbc.default.password=


Liferay can use C3PO, DBCP, HikariCP, or Tomcat for connection pooling. See com.liferay.portal.dao.jdbc.util.DataSourceFactoryBean for the actual implementation. It is important to understand the strengths and weaknesses of each provider so that you can choose the best one that fits your deployment scenario. Provider specific properties can also be passed along directly to the provider. For example, the property "jdbc.default.acquireIncrement" is read by C3PO, and the property "jdbc.default.maxActive" is read by DBCP.

The default provider is HikariCP.

Defaults:

    jdbc.default.liferay.pool.provider=hikaricp

Examples:

    jdbc.default.liferay.pool.provider=c3po
    jdbc.default.liferay.pool.provider=dbcp
    jdbc.default.liferay.pool.provider=tomcat


The following properties will be read by C3PO if Liferay is configured to use C3PO in the property "jdbc.default.liferay.pool.provider". See http://www.mchange.com/projects/c3p0/index.html#configuration for a list of additional fields used by C3PO for configuring database connections.

Defaults:

    jdbc.default.acquireIncrement=5
    jdbc.default.acquireRetryAttempts=3
    jdbc.default.acquireRetryDelay=1000
    jdbc.default.connectionCustomizerClassName=com.liferay.portal.dao.jdbc.pool.c3p0.PortalConnectionCustomizer
    jdbc.default.idleConnectionTestPeriod=60
    jdbc.default.initialPoolSize=10
    jdbc.default.maxIdleTime=3600
    jdbc.default.maxPoolSize=100
    jdbc.default.minPoolSize=10
    jdbc.default.numHelperThreads=10

Examples:

    jdbc.default.transactionIsolation=1


The following properties will be read by HikariCP if Liferay is configured to use HikariCP in the property "jdbc.default.liferay.pool.provider". See https://github.com/brettwooldridge/HikariCP for a list of additional fields used by HikariCP for configuring database connections.

HikariCP recommends to also tune database settings. See https://github.com/brettwooldridge/HikariCP/wiki for additional setting details for database.

Defaults:

    jdbc.default.connectionTimeout=30000
    jdbc.default.idleTimeout=600000
    jdbc.default.maximumPoolSize=100
    jdbc.default.maxLifetime=0
    jdbc.default.minimumIdle=10
    jdbc.default.registerMbeans=true

Examples:

    jdbc.default.autoCommit=true
    jdbc.default.connectionTestQuery=SELECT releaseId FROM Release_
    jdbc.default.initializationFailFast=false


The following properties will be read by both DBCP and Tomcat JDBC Connection Pool if Liferay is configured to use DBCP or Tomcat JDBC Connection Pool in the property "jdbc.default.liferay.pool.provider". See http://commons.apache.org/dbcp/configuration.html and http://people.apache.org/~fhanik/jdbc-pool/jdbc-pool.html for a list of additional fields used by DBCP or Tomcat JDBC Connection Pool for configuring database connections.

Defaults:

    jdbc.default.maxActive=100
    jdbc.default.minIdle=10
    jdbc.default.testWhileIdle=true
    jdbc.default.timeBetweenEvictionRunsMillis=30000
    jdbc.default.validationQuery=SELECT releaseId FROM Release_

Examples:

    jdbc.default.defaultTransactionIsolation=READ_UNCOMMITTED
    jdbc.default.logAbandoned=true
    jdbc.default.removeAbandonedTimeout=3600


The following properties will be read by Tomcat JDBC Connection Pool if Liferay is configured to use Tomcat JDBC Connection Pool in the property "jdbc.default.liferay.pool.provider". See http://people.apache.org/~fhanik/jdbc-pool/jdbc-pool.html for a list of additional fields used by Tomcat JDBC Connection Pool for configuring database connections.

Defaults:

    jdbc.default.jdbcInterceptors=org.apache.tomcat.jdbc.pool.interceptor.ConnectionState
    jdbc.default.jmxEnabled=true
    jdbc.default.fairQueue=true
    jdbc.default.useEquals=false


Top of Page

Custom SQL


Set this property to true to automatically escape wildcards to literal values.

Defaults:

    custom.sql.auto.escape.wildcards.enabled=false


Input a list of comma delimited custom SQL configurations.

Defaults:

    custom.sql.configs=custom-sql/default.xml


Some databases do not recognize a NULL IS NULL check. Set the "custom.sql.function.isnull" and "custom.sql.function.isnotnull" properties for your specific database.

There is no need to manually set these properties because com.liferay.portal.spring.PortalHibernateConfiguration already sets it. However, these properties are available so that you can see how you can override it for a database that PortalHibernateConfiguration does not yet know how to auto configure.


DB2

Examples:

    custom.sql.function.isnull=CAST(? AS VARCHAR(32672)) IS NULL
    custom.sql.function.isnotnull=CAST(? AS VARCHAR(32672)) IS NOT NULL


MySQL (for testing only)

Examples:

    custom.sql.function.isnull=IFNULL(?, '1') = '1'
    custom.sql.function.isnotnull=IFNULL(?, '1') = '0'


Sybase

Examples:

    custom.sql.function.isnull=CONVERT(VARCHAR,?) IS NULL
    custom.sql.function.isnotnull=CONVERT(VARCHAR,?) IS NOT NULL


Top of Page

Database


Set this property to true to update database indexes on startup. This will ensure that all necessary indexes are added and that unnecessary indexes are removed. Only indexes that have names that match "LIFERAY_" OR "IX_" will be updated. Make sure that your custom indexes do not match the Liferay pattern to ensure that your custom indexes are not removed as unnecessary indexes.

Defaults:

    database.indexes.update.on.startup=false


Set the max number of columns in an ORDER BY clause.

Defaults:

    database.order.by.max.columns[sybase]=31


Set the max length for string type of index.

Defaults:

    database.string.index.max.length[mariadb]=255
    database.string.index.max.length[mysql]=255


Specify any database vendor specific settings.


MySQL


Set the MySQL engine type. InnoDB is the recommended engine because it provides transactional integrity.

Defaults:

    database.mysql.engine=InnoDB


Top of Page

Transaction


Set the transaction isolation level for the Counter service. See "transaction.isolation.portal" for more information. The preferred value is 8 when the transaction manager supports it. If the transaction manager does not support it, set this to -1 to use the database's default isolation level.

Defaults:

    transaction.isolation.counter=2


Set the definition of the "portal" transaction isolation level. The "portal" transaction isolation level is not a real isolation level. It is just a pointer to a real isolation level that can be configured by setting this property. Set the value to -1 to use the database's default isolation level. Set the value to 2 to use "read committed". Set the value to 1 to use "read uncommitted". Set the value to 4 to use "repeatable read". Set the value to 8 to use "serializable".

Defaults:

    transaction.isolation.portal=2


Set the transaction manager. It must be a class that extends org.springframework.transaction.support.AbstractPlatformTransactionManager.

The application server specific transaction managers provide XA transactions by leveraging application server specific data sources and thus require additional application server specific configuration. You should not modify this unless you know what you're doing.

Defaults:

    transaction.manager.impl=com.liferay.portal.spring.hibernate.LastSessionRecorderHibernateTransactionManager

Examples:

    transaction.manager.impl=org.springframework.transaction.jta.JtaTransactionManager
    transaction.manager.impl=org.springframework.transaction.jta.OC4JJtaTransactionManager
    transaction.manager.impl=org.springframework.transaction.jta.WebLogicJtaTransactionManager
    transaction.manager.impl=org.springframework.transaction.jta.WebSphereUowTransactionManager


Additional properties that follow the pattern "transaction.manager.property.*" will be read to call the setters on the transaction manager. For example, the property "transaction.manager.property.globalRollbackOnParticipationFailure", will call the setter "setGlobalRollbackOnParticipationFailure" on the transaction manager. The list of available setters depends on the implementation specified in the property "transaction.manager.impl".

"allowCustomIsolationLevels" should be set to true when using the JtaTransactionManager.

Defaults:

    transaction.manager.property.globalRollbackOnParticipationFailure=false

Examples:

    transaction.manager.property.allowCustomIsolationLevels=true


Top of Page

Transactional Cache


Set this property to true to enable transactional cache. When enabled, changes to caches take effect when transaction commits successfully. Caches rollback when transactions rollback.

Defaults:

    transactional.cache.enable=true


Set a list of comma delimited transactional portal cache names. The "?" character represents a single character wildcard. The "*" symbol character a multiple character wildcard. The "%" character is used to escape characters.

Defaults:

    transactional.cache.names=com.liferay.portal.kernel.dao.orm.EntityCache*,com.liferay.portal.kernel.dao.orm.FinderCache*,com.liferay.portal.kernel.service.persistence.impl.TableMapper-*,com.liferay.portlet.PortalPreferencesWrapperCacheUtil


Top of Page

Ehcache


Set the classpath to the location of the Ehcache config file for internal caches. Edit the file specified in the property "ehcache.multi-vm.config.location" to enable clustered cache.

Defaults:

    ehcache.single.vm.config.location=/ehcache/liferay-single-vm.xml
    ehcache.multi.vm.config.location=/ehcache/liferay-multi-vm-clustered.xml


Set this to true to enable the Ehcache bootstrap cache loader.

Defaults:

    ehcache.bootstrap.cache.loader.enabled=false


Input a list of comma delimited key value pair to set bootstrap loader properties for the default cache.

Defaults:

    ehcache.bootstrap.cache.loader.properties.default=


Input a list of comma delimited key value pair to set bootstrap loader properties for a specific cache.

Examples:

    ehcache.bootstrap.cache.loader.properties.${specific.cache.name}=


Input a list of comma delimited key value pair to set replication properties for the default cache.

Defaults:

    ehcache.replicator.properties.default=


Input a list of comma delimited key value pair to set replication properties for a specific cache.

Defaults:

    ehcache.replicator.properties.com.liferay.dynamic.data.mapping.data.provider.internal.rest.DDMRESTDataProvider=replicatePuts=false
    ehcache.replicator.properties.com.liferay.journal.util.JournalContent=replicatePuts=false
    ehcache.replicator.properties.com.liferay.portal.kernel.template.TemplateResourceLoader.css=replicatePuts=false
    ehcache.replicator.properties.com.liferay.portal.kernel.template.TemplateResourceLoader.ftl=replicatePuts=false
    ehcache.replicator.properties.com.liferay.portal.kernel.template.TemplateResourceLoader.vm=replicatePuts=false
    ehcache.replicator.properties.com.liferay.portal.security.permission.PermissionCacheUtil_PERMISSION=replicatePuts=false
    ehcache.replicator.properties.com.liferay.portal.security.permission.PermissionCacheUtil_PERMISSION_CHECKER_BAG=replicatePuts=false
    ehcache.replicator.properties.com.liferay.portal.security.permission.PermissionCacheUtil_RESOURCE_BLOCK_IDS_BAG=replicatePuts=false
    ehcache.replicator.properties.com.liferay.portal.servlet.filters.cache.CacheUtil=replicatePuts=false
    ehcache.replicator.properties.com.liferay.portal.kernel.webserver.WebServerServletToken=replicatePuts=false
    ehcache.replicator.properties.com.liferay.portlet.social.service.impl.SocialActivitySettingLocalServiceImpl=replicatePuts=false
    ehcache.replicator.properties.com.liferay.wiki.model.WikiPageDisplay=replicatePuts=false

Examples:

    ehcache.replicator.properties.${specific.cache.name}=


Set this to true to enable JMX integration in com.liferay.portal.cache.EhcachePortalCacheManager. Set this to false if the portal needs to be reloaded under WebSphere.

Defaults:

    ehcache.portal.cache.manager.jmx.enabled=true


Set this to true to allow Ehcache to use blocking caches. This improves performance significantly by locking on keys instead of the entire cache. The drawback is that threads can hang if the cache is not used properly. Make sure that all queries that return a miss also immediately populate the cache, or else other threads that are blocked on a query of that same key will continue to hang. Reference Ehcache's BlockingCache for more information. The blocking cache is no longer implemented by Ehcache's BlockingCache, but by Liferay's BlockingPortalCache for better safety and faster performance.

Blocking cache together with transactional cache performs poorly, because transactional cache affects the cache population visibility across transactions. When transactional cache is on, blocking cache most likely does nothing useful unless the transaction window time is short. When transactional cache is off, it is better to turn on blocking cache for better database access performance.

Defaults:

    ehcache.blocking.cache.allowed=false

Defaults:

    ehcache.rmi.peer.listener.factory.class=com.liferay.portal.cache.ehcache.internal.rmi.LiferayRMICacheManagerPeerListenerFactory
    ehcache.rmi.peer.listener.factory.properties=
    ehcache.rmi.peer.provider.factory.class=net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory
    ehcache.rmi.peer.provider.factory.properties=peerDiscovery=automatic,multicastGroupAddress=${multicast.group.address["multi-vm"]},multicastGroupPort=${multicast.group.port["multi-vm"]},timeToLive=1


Set the socket timeout in milliseconds.

Defaults:

    ehcache.socket.so.timeout=10000


Set the start port for Ehcache socket. The port number will increase by 1 until it finds an unused port.

Defaults:

    ehcache.socket.start.port=32454


Top of Page

JavaScript


The need to specify two separate lists of JavaScript files for performance reasons (the "javascript.barebone.files" and "javascript.everything.files" properties) in this file is deprecated because it can be configured via OSGi using BND headers. These properties will be removed in a future release.

Set a list of JavaScript files that will be loaded automatically in /html/common/themes/top_js.jsp.

There are two lists of files specified in the properties "javascript.barebone.files" and "javascript.everything.files".

As the name suggests, the barebone list is the minimum list of JavaScript files required for most cases. The everything list includes everything else not listed in the barebone list.

The two lists of files exist for performance reasons because unauthenticated users usually do not utilize all the JavaScript that is available. See the property "javascript.barebone.enabled" for more information on the logic of when the barebone list is used and when the everything list is used and how to customize that logic.

The list of files are also merged and packed for further performance improvements. See the property "javascript.fast.load" for more details.


Specify the list of barebone files.

The ordering of the JavaScript files is important and should follow a specific format. The first grouping denotes utility scripts that are used by the second and third groups. The second grouping denotes utility classes that rely on the first group, but do not rely on the second or third group. The third grouping denotes modules that rely on the first and second group.

This configuration is deprecated because it can be configured in a modular way using the "Liferay-JS-Resources-Top-Head" header in OSGi bundles' manifest files. It will be removed from this file in a future release.

Defaults:

    javascript.barebone.files=


Specify the list of remaining JavaScript files not already specified in the list of barebone files (i.e., "javascript.barebone.files").

This configuration is deprecated because it can be configured in a modular way using the "Liferay-JS-Resources-Top-Head-Authenticated" header in OSGi bundles' manifest files. It will be removed from this file in a future release.

Defaults:

    javascript.everything.files=


Set this property to false to always load JavaScript files listed under the property "Liferay-JS-Resources-Top-Head-Authenticated" of OSGi bundles' manifest files.

Set this to true to sometimes load JavaScript files listed under the property "Liferay-JS-Resources-Top-Head" and sometimes load those under "Liferay-JS-Resources-Top-Head-Authenticated".

The default logic is coded in com.liferay.portal.events.ServicePreAction in such a way that unauthenticated users get the list of "Liferay-JS-Resources-Top-Head" JavaScript files whereas authenticated users get both the list of "Liferay-JS-Resources-Top-Head" JavaScript files and the list of "Liferay-JS-Resources-Top-Head-Authenticated" JavaScript files.

Defaults:

    javascript.barebone.enabled=true


Set this property to true to load the packed version of files listed in the properties "Liferay-JS-Resources-Top-Head" and/or "Liferay-JS-Resources-Top-Head-Authenticated" of OSGi bundles' manifest files.

Set this property to false for easier debugging for development. You can also disable fast loading by setting the URL parameter "js_fast_load" to "0".

Defaults:

    javascript.fast.load=true


Input a list of comma delimited properties that are valid bundle IDs for the JavaScript minifier.

This mechanism is deprecated and will be removed in a future release.

Defaults:

    javascript.bundle.ids=\
        javascript.barebone.files,\
        javascript.everything.files


Define a bundle directory for each property listed in "javascript.bundle.ids".

This mechanism is deprecated and will be removed in a future release.

Defaults:

    javascript.bundle.dir[javascript.barebone.files]=/
    javascript.bundle.dir[javascript.everything.files]=/


Define the bundle dependencies using any property listed in "javascript.bundle.ids".

This mechanism is deprecated and will be removed in a future release.

Defaults:

    javascript.bundle.dependencies[javascript.everything.files]=javascript.barebone.files


Set this to true to enable the display of JavaScript logging.

Defaults:

    javascript.log.enabled=false


Set this to true to enable Single Page Application links.

Defaults:

    javascript.single.page.application.enabled=true


Set the timeout in milliseconds before SPA navigation times out and falls back to standard navigation.

Defaults:

    javascript.single.page.application.timeout=0


Top of Page

SQL Data


Set the default SQL IDs for common objects.

Defaults:

    sql.data.com.liferay.portal.kernel.model.Country.country.id=19
    sql.data.com.liferay.portal.kernel.model.Region.region.id=5
    sql.data.com.liferay.portal.kernel.model.ListType.account.address=10000
    sql.data.com.liferay.portal.kernel.model.ListType.account.email.address=10004
    sql.data.com.liferay.portal.kernel.model.ListType.contact.email.address=11003
    sql.data.com.liferay.portal.kernel.model.ListType.organization.status=12017


Set the maximum parameters that a SQL transaction query can contain. Some databases do not allow for more than 2000 parameters in a query.

Defaults:

    sql.data.max.parameters=1000


Top of Page

Weblogic


Set the strategy for non-serializable wrapping on Weblogic. If set to true, the wrapping is done for all objects. If set to false, no wrapping is done, but Weblogic must be configured not serializae request attributes.

Defaults:

    weblogic.request.wrap.non.serializable=true


Top of Page

Company

Defaults:

    company.default.name=Liferay


This sets the default web ID. Omniadmin users must belong to the company with this web ID.

Defaults:

    company.default.web.id=liferay.com


This sets the default home URL of the portal.

Defaults:

    company.default.home.url=/web/guest


This sets the default locale of the portal, overriding the properties "user.language" and "user.country" specified in system.properties.

Examples:

    company.default.locale=en_US


This sets the default time zone of the portal during initial setup.

To change the default time zone of an existing portal instance, use the Control Panel options.

Defaults:

    company.default.time.zone=UTC


Set this to the appropriate encryption algorithm to be used for company level encryption algorithms (except password encryption which is defined via the property "passwords.encryption.algorithm").

If you change this setting, you may need to also change the property "company.encryption.key.size" to configure the desired encryption key size.

For more details about encryption keys, see the Java Cryptography Extension documentation.

Defaults:

    company.encryption.algorithm=AES

Examples:

    company.encryption.algorithm=Blowfish
    company.encryption.algorithm=DES
    company.encryption.algorithm=DESede


Set this to define the size used for the company wide encryption key. If you change this setting, you may need to also change the property "company.encryption.algorithm" to ensure the algorithm supports your key size. Most encryption algorithm implementations do not support key sizes stronger than 128. Only those with unlimited strength cryptography support stronger keys.

For more details about supported key sizes for encryption keys, see the Java Cryptography Extension documentation.

Defaults:

    company.encryption.key.size=128

Examples:

    company.encryption.key.size=56
    company.encryption.key.size=168
    company.encryption.key.size=256
    company.encryption.key.size=384
    company.encryption.key.size=512


The login field is prepopulated with the company's domain name if the login is unpopulated and user authentication is based on email addresses. Set this to false to disable the behavior.

Defaults:

    company.login.prepopulate.domain=true


The portal can authenticate users based on their email address, screen name, or user ID.

Defaults:

    company.security.auth.type=emailAddress

Examples:

    company.security.auth.type=screenName
    company.security.auth.type=userId


Set this to true to ensure users login with https. If this is set to true and you want your HTTP session to contain your credentials after logging in, then the property "session.enable.phishing.protection" must be set to false or your credentials will only be available in the HTTPS session.

Defaults:

    company.security.auth.requires.https=false


Set this to true to allow users to select the "remember me" feature to automatically login to the portal.

Defaults:

    company.security.auto.login=true


Set this to the maximum age (in number of seconds) of the browser cookie that enables the "remember me" feature. A value of 31536000 signifies lifespan of one year. A value of -1 signifies a lifespan of a browser session.

Rather than setting this to 0, set the property "company.security.auto.login" to false to disable the "remember me" feature.

Defaults:

    company.security.auto.login.max.age=31536000


Set this to true to allow users to autocomplete the login form based on their previously entered values.

Defaults:

    company.security.login.form.autocomplete=true


Set this to true to allow users to autocomplete the reminder query form based on their previously entered values.

Defaults:

    company.security.password.reminder.query.form.autocomplete=true


Set this to true to allow users to ask the portal to send them their password.

Defaults:

    company.security.send.password=true


Set this to true to allow users to ask the portal to send them a password reset link.

Defaults:

    company.security.send.password.reset.link=true


Set this to true to allow strangers to create accounts and register themselves on the portal.

Defaults:

    company.security.strangers=true


Enter a friendly URL of a page that will be used to create new accounts whenever the user clicks the "create account" link in the login portlet. This allows providing custom portlets to create accounts. By default, the portal's create account will be used.

Examples:

    company.security.strangers.url=/create_account


Set this to true if strangers can create accounts with email addresses that match the company mail suffix. This property is not used unless "company.security.strangers" is also set to true.

Defaults:

    company.security.strangers.with.mx=true


Set this to true if strangers who create accounts need to be verified via email.

Defaults:

    company.security.strangers.verify=false


Set this to true to allow site administrators to use their own logo instead of the enterprise logo.

Defaults:

    company.security.site.logo=true


Input a list of sections that will be included as part of the company authentication settings form.

Defaults:

    company.settings.form.authentication=


Top of Page

Users


Set this to false if users cannot be deleted.

Defaults:

    users.delete=true


Set this to true when you want the validation to allow for creation of numeric screen names.

Defaults:

    users.screen.name.allow.numeric=true


Set this to true to always autogenerate user screen names even if the user gives a specific user screen name. If this is set to true, the LDAP importer will fetch users by their email address even if the property "company.security.auth.type" is set to screenName.

Defaults:

    users.screen.name.always.autogenerate=false


Input a class name that implements com.liferay.portal.security.auth.ScreenNameGenerator. This class will be called to generate user screen names.

This property is not read by the portal except for portal properties overridden by liferay-hook.xml. It remains here only as a reference.

Examples:

    users.screen.name.generator=com.liferay.portal.security.auth.DefaultScreenNameGenerator


Input a list of special characters that are allowed in screen names. This property is read by the default screen name validator implementation. Custom implementations need to also use this property to account for screen names with special characters.

Defaults:

    users.screen.name.special.characters=-._


Input a class name that implements com.liferay.portal.security.auth.ScreenNameValidator. This class will be called to validate user screen names.

This property is not read by the portal except for portal properties overridden by liferay-hook.xml. It remains here only as a reference.

Examples:

    users.screen.name.validator=com.liferay.portal.security.auth.DefaultScreenNameValidator
    users.screen.name.validator=com.liferay.portal.security.auth.LiberalScreenNameValidator


Set this to false if you want to be able to create users without an email address. An email address will be automatically assigned to a user based on the property "users.email.address.auto.suffix".

Defaults:

    users.email.address.required=true


Set the suffix of the email address that will be automatically generated for a user that does not have an email address. This property is not used unless the property "users.email.address.required" is set to false. The autogenerated email address will be the user ID plus the specified suffix.

Defaults:

    users.email.address.auto.suffix=@no-emailaddress.com


Input a class name that implements com.liferay.portal.security.auth.EmailAddressGenerator. This class will be called to generate an email address for a user that does not specify an email address. This class will only be used if the property "users.email.address.required" is set to false.

This property is not read by the portal except for portal properties overridden by liferay-hook.xml. It remains here only as a reference.

Examples:

    users.email.address.generator=com.liferay.portal.security.auth.DefaultEmailAddressGenerator


Input a class name that implements com.liferay.portal.security.auth.EmailAddressValidator. This class will be called to validate user email addresses.

This property is not read by the portal except for portal properties overridden by liferay-hook.xml. It remains here only as a reference.

Examples:

    users.email.address.validator=com.liferay.portal.security.auth.DefaultEmailAddressValidator
    users.email.address.validator=com.liferay.portal.security.auth.LiberalEmailAddressValidator


Input a class name that implements com.liferay.portal.security.auth.FullNameGenerator. This class will be called to generate a full name from the user's first, middle, and last names.

This property is not read by the portal except for portal properties overridden by liferay-hook.xml. It remains here only as a reference.

Examples:

    users.full.name.generator=com.liferay.portal.security.auth.DefaultFullNameGenerator
    users.full.name.generator=com.liferay.portal.security.auth.FamilyNameFirstFullNameGenerator


Input a class name that implements com.liferay.portal.security.auth.FullNameValidator. This class will be called to validate the user's first, middle, and last names.

This property is not read by the portal except for portal properties overridden by liferay-hook.xml. It remains here only as a reference.

Examples:

    users.full.name.validator=com.liferay.portal.security.auth.DefaultFullNameValidator


Set this to true to record last login information for a user.

Defaults:

    users.update.last.login=true


Set the allowed user list views.

Defaults:

    users.list.views=tree,flat-user-groups


Set this to true to enable reminder queries that are used to help reset a user's password.

Defaults:

    users.reminder.queries.enabled=true
    users.reminder.queries.custom.question.enabled=true


Set this to false to enable users without a reminder query to reset their password.

Defaults:

    users.reminder.queries.required=false


Input a list of questions used for reminder queries.

Defaults:

    users.reminder.queries.questions=what-is-your-primary-frequent-flyer-number,what-is-your-library-card-number,what-was-your-first-phone-number,what-was-your-first-teacher's-name,what-is-your-father's-middle-name


Set this to true to search users from the index. Set this to false to search users from the database. Note that setting this to false will disable the ability to search users based on Expando attributes. This setting is not used unless the indexer is enabled through the control panel.

Defaults:

    users.search.with.index=true


Set a property with the prefix "users.update.user.name." and a suffix with the class name that should be updated whenever a user's name has changed.

Defaults:

    users.update.user.name.com.liferay.message.boards.model.MBMessage=true


Input a list of user attributes that will be included when exporting users to a CSV file. You can include custom fields by adding the prefix "expando:" to the attribute name.

Defaults:

    users.export.csv.fields=fullName,emailAddress


Set the friendly URL to a user's profile page. If none is specified, the portal will query the user's first public page at runtime.

The following variables can be used: ${liferay:screenName} and ${liferay:userId}.

Examples:

    users.profile.friendly.url=/web/${liferay:screenName}/profile


Set the maximum number of organizations, roles, and user groups to display for each user in the user's administration search container.

Defaults:

    users.admin.organization.column.limit=50
    users.admin.role.column.limit=50
    users.admin.user.group.column.limit=50


Top of Page

Groups and Roles


Input a list of comma delimited system group names that will exist in addition to the standard system groups. When the server starts, the portal checks to ensure all system groups exist. Any missing system group will be created by the portal.

Defaults:

    system.groups=


Input a list of comma delimited system role names that will exist in addition to the standard system roles. When the server starts, the portal checks to ensure all system roles exist. Any missing system role will be created by the portal.

The standard system roles are: Administrator, Guest, Power User, and User. These roles cannot be removed or renamed.

Defaults:

    system.roles=


Set the description of the Administrator system role.

Defaults:

    system.role.Administrator.description=Administrators are super users who can do anything.


Set the description of the Guest system role.

Defaults:

    system.role.Guest.description=Unauthenticated users always have this role.


Set the description of the Owner system role.

Defaults:

    system.role.Owner.description=This is an implied role with respect to the objects users create.


Set the description of the Power User system role.

Defaults:

    system.role.Power.User.description=Power Users have their own personal site.


Set the description of the User system role.

Defaults:

    system.role.User.description=Authenticated users should be assigned this role.


Input a list of comma delimited system organization role names that will exist in addition to the standard system organization roles. When the server starts, the portal checks to ensure all system organization roles exist. Any missing system organization role will be created by the portal.

The standard system organization roles are: Organization Administrator, Organization Member, and Organization Owner. These roles cannot be removed or renamed.

Defaults:

    system.organization.roles=


Set the description of the Organization Administrator system organization role.

Defaults:

    system.organization.role.Organization.Administrator.description=Organization Administrators are super users of their organization but cannot make other users into Organization Administrators.


Set the description of the Organization Member system organization role.

Defaults:

    system.organization.role.Organization.User.description=All users who belong to an organization have this role within that organization.


Set the description of the Organization Owner system organization role.

Defaults:

    system.organization.role.Organization.Owner.description=Organization Owners are super users of their organization and can assign organization roles to users.


Input a list of comma delimited system site role names that will exist in addition to the standard system site roles. When the server starts, the portal checks to ensure all system site roles exist. Any missing system site role will be created by the portal.

The standard system site roles are: Site Administrator, Site Member, and Site Owner. These roles cannot be removed or renamed.

Defaults:

    system.site.roles=


Set the description of the Site Administrator system site role.

Defaults:

    system.site.role.Site.Administrator.description=Site Administrators are super users of their site but cannot make other users into Site Administrators.


Set the description of the Site Member system site role.

Defaults:

    system.site.role.Site.Member.description=All users who belong to a site have this role within that site.


Set the description of the Site Owner system site role.

Defaults:

    system.site.role.Site.Owner.description=Site Owners are super users of their site and can assign site roles to users.


Omniadmin users can administer the portal's core functionality: gc, shutdown, etc. Omniadmin users must belong to the default company.

Multiple portal instances might be deployed on one application server, but not all of the administrators should have access to this core functionality. Input the IDs of users who are omniadmin users.

Leave this field blank if users who belong to the right company and have the Administrator role are allowed to administer the portal's core functionality.

Defaults:

    omniadmin.users=


Set this to true if all users are required to agree to the terms of use.

Defaults:

    terms.of.use.required=true


Input a list of group class names that will trigger a complex SQL query to delegate filtering in the database tier. A group class name corresponds to the className column in the Group_ table. Filtering in memory at the application tier after a simple SQL query can be much better on performance.

Defaults:

    groups.complex.sql.class.names=com.liferay.portal.kernel.model.User


Specify subtypes of roles if you want to be able to search for roles using your custom criteria.

Defaults:

    roles.site.subtypes=
    roles.organization.subtypes=
    roles.regular.subtypes=


Set this to true when you want the validation to allow for creation of roles with numeric names.

Defaults:

    roles.name.allow.numeric=false


Top of Page

Organizations


Set this property to false if you want any administrator of an organization to be able to assign any user to that organization. By default, he will only be able to assign the users of the organizations and suborganizations that he can manage.

Defaults:

    organizations.assignment.strict=true


Set this property to true if you want users to only be members of the organizations to which they are assigned explicitly. By default, they will also become implicit members of the ancestors of those organizations. For example, if a user belongs to Liferay Spain, he will implicitly be a member of the ancestors Liferay Europe and Liferay Global and will be able to access their private pages.

Defaults:

    organizations.membership.strict=false


Set this to true to search organizations from the index. Set this to false to search organizations from the database. Note that setting this to false will disable the ability to search organizations based on Expando attributes. This setting is not used unless the indexer is enabled through the control panel.

Defaults:

    organizations.search.with.index=true


Top of Page

User Groups


Set this to true when you want the validation to allow for creation of user groups with numeric names.

Defaults:

    user.groups.name.allow.numeric=false


Set this to true to enable the legacy behavior of copying user group pages to user personal sites. This behavior is deprecated and is likely to be removed and replaced with a different scheme in future releases.

Defaults:

    user.groups.copy.layouts.to.user.personal.site=false


Set this to true to search user groups from the index. Set this to false to search user groups from the database. Note that setting this to false will disable the ability to search user groups based on Expando attributes. This setting is not used unless the indexer is enabled through the control panel.

Defaults:

    user.groups.search.with.index=true


Top of Page

Membership Policies


Set this to true to verify membership policies every time the server starts or when a membership policy hook is deployed.

Defaults:

    membership.policy.auto.verify=false


Input a class name that implements com.liferay.portal.security.membershippolicy.OrganizationMembershipPolicy. This class will be called whenever a user is added or removed from an organization or when a user is assigned or unassigned to a organization role or when a new organization is added or updated.

This property is not read by the portal except for portal properties overridden by liferay-hook.xml. It remains here only as a reference.

Examples:

    membership.policy.organizations=com.liferay.portal.security.membershippolicy.DummyOrganizationMembershipPolicy


Input a class name that implements com.liferay.portal.security.membershippolicy.RoleMembershipPolicy. This class will be called whenever a user is assign or unassigned from a regular role or when a new role is added or updated.

This property is not read by the portal except for portal properties overridden by liferay-hook.xml. It remains here only as a reference.

Examples:

    membership.policy.roles=com.liferay.portal.security.membershippolicy.DummyRoleMembershipPolicy


Input a class name that implements com.liferay.portal.security.membershippolicy.SiteMembershipPolicy. This class will be called whenever a user is added or removed from a site or when a user is assigned or unassigned to a site role or a new site is added or updated.

This property is not read by the portal except for portal properties overridden by liferay-hook.xml. It remains here only as a reference.

Examples:

    membership.policy.sites=com.liferay.portal.security.membershippolicy.DummySiteMembershipPolicy
    membership.policy.sites=com.liferay.portal.security.membershippolicy.DefaultSiteMembershipPolicy


Input a class name that implements com.liferay.portal.security.membershippolicy.UserGroupsMembershipPolicy. This class will be called whenever a user is added or removed from a user group or a new user group is added or updated.

This property is not read by the portal except for portal properties overridden by liferay-hook.xml. It remains here only as a reference.

Examples:

    membership.policy.user.groups=com.liferay.portal.security.membershippolicy.DummyUserGroupMembershipPolicy


Top of Page

Languages and Time Zones


Specify the available locales. Messages corresponding to a specific language are specified in properties files with file names matching that of content/Language_*.properties. These values can also be overridden in properties files with file names matching that of content/Language-ext_*.properties. Use a comma to separate each entry.

If there is more than one locale for the same language, the first one in the list will be used when a translation is requested in another locale of the same language but a translated value cannot be found. For example, if there are two locales such us pt_BR and pt_PT (in this order), any key not found in pt_PT will be looked for in pt_BR.

Language codes follow the ISO 639-1 standard. Content for each locale must be UTF-8 encoded.

See the following links, which specify language and country codes:

     http://www.loc.gov/standards/iso639-2/php/code_list.php
     http://userpage.chemie.fu-berlin.de/diverse/doc/ISO_3166.html

Defaults:

    locales=ar_SA,eu_ES,bg_BG,ca_AD,ca_ES,zh_CN,zh_TW,hr_HR,cs_CZ,da_DK,nl_NL,nl_BE,en_US,en_GB,en_AU,et_EE,fi_FI,fr_FR,fr_CA,gl_ES,de_DE,el_GR,iw_IL,hi_IN,hu_HU,in_ID,it_IT,ja_JP,ko_KR,lo_LA,lt_LT,nb_NO,fa_IR,pl_PL,pt_BR,pt_PT,ro_RO,ru_RU,sr_RS,sr_RS_latin,sl_SI,sk_SK,es_ES,sv_SE,th_TH,tr_TR,uk_UA,vi_VN


Specify the locales that are in beta. Go to http://translate.liferay.com to participate in the translation efforts.

Defaults:

    locales.beta=ar_SA,eu_ES,bg_BG,ca_AD,zh_TW,hr_HR,cs_CZ,da_DK,nl_BE,en_GB,en_AU,et_EE,gl_ES,el_GR,hi_IN,in_ID,it_IT,ko_KR,lo_LA,lt_LT,nb_NO,fa_IR,pl_PL,pt_PT,ro_RO,ru_RU,sr_RS,sr_RS_latin,sl_SI,sk_SK,sv_SE,tr_TR,uk_UA,vi_VN


Specify the locales that are enabled by default.

Defaults:

    locales.enabled=ca_ES,zh_CN,nl_NL,en_US,fi_FI,fr_FR,de_DE,iw_IL,hu_HU,ja_JP,pt_BR,es_ES


Specify the collator rules to be used by the CollatorUtil. These rules, if set, are provided to a RulesBasedCollator for text sorting and are only configurable by locale. A file can also be used by prefixing "file\:" to a path on the file system. Using a file means property escaping can be avoided.

See https://issues.liferay.com/browse/LPS-73600 for more information.

Examples:

    collator.rules[en_US]=


Set this to true if unauthenticated users get their preferred language from the Accept-Language header. Set this to false if unauthenticated users get their preferred language from their company.

Defaults:

    locale.default.request=false


Set this to 0 if the locale is not automatically prepended to a URL. This means that each URL could potentially point to many different languages. For example, the URL http://localhost:8080/web/guest/home could then be viewed by users in many different languages.

Set this to 1 if the locale is automatically prepended to a URL when the requested locale is not the default locale. This means that each URL points to just one language. For example, the URL http://localhost:8080/web/guest/home would point to the default language. The URL http://localhost:8080/zh/web/guest/home and http://localhost:8080/zh_CN/web/guest/home would both point to the Chinese language.

In cases where the prepended locale is "zh" and not the complete locale "zh_CN", then the full locale returned will be based on the order in which the locales appear in the property "locales". If "zh_CN" appears before "zh_TW", then "zh" will be a short hand for "zh_TW".

The default language is set in system.properties with the properties "user.country" and "user.language".

Set this to 2 if the locale is automatically prepended to every URL. This means that each URL points to just one language.

Set this to 3 if the locale is automatically prepended to a URL when the requested locale is not the default user locale. In the case of guest users, the behavior is the same as having a value of 1.

Note that each language requires an entry in the property "locales" and a servlet mapping in web.xml for the I18n Servlet.

Defaults:

    locale.prepend.friendly.url.style=3


Set this to false to return an HTTP 404 status code and page if the requested URL includes a locale that is not available among the locales set in the "locales" and "locales.beta" properties.

For example, if Spanish is not one of the available locales and http://localhost:8080/es/web/guest is requested, then a 404 error code and page is returned.

This can improve SEO since it avoids duplicated pages, if in the installation, there are a set of definded locales available.

Defaults:

    locale.use.default.if.not.available=false


Set this to true to disable language translations. When a translation is requested for the key "first-name", instead of returning "First Name" in English (or in its relevant locale), it will return "first-name".

Defaults:

    translations.disabled=false


Specify the available time zones. The specified IDs must match those from the class java.util.TimeZone.

Defaults:

    time.zones=\
        Pacific/Midway,\
        Pacific/Honolulu,\
        America/Anchorage,\
        America/Los_Angeles,\
        America/Phoenix,\
        America/Denver,\
        America/Chicago,\
        America/New_York,\
        America/Caracas,\
        America/Puerto_Rico,\
        America/St_Johns,\
        America/Sao_Paulo,\
        America/Noronha,\
        Atlantic/Azores,\
        UTC,\
        Europe/Lisbon,\
        Europe/Paris,\
        Europe/Istanbul,\
        Asia/Jerusalem,\
        Asia/Baghdad,\
        Asia/Tehran,\
        Asia/Dubai,\
        Asia/Kabul,\
        Asia/Karachi,\
        Asia/Calcutta,\
        Asia/Katmandu,\
        Asia/Dhaka,\
        Asia/Rangoon,\
        Asia/Saigon,\
        Asia/Shanghai,\
        Asia/Tokyo,\
        Asia/Seoul,\
        Australia/Perth,\
        Australia/Eucla,\
        Australia/Darwin,\
        Australia/Sydney,\
        Australia/Lord_Howe,\
        Pacific/Guadalcanal,\
        Pacific/Auckland,\
        Pacific/Enderbury,\
        Pacific/Kiritimati


Top of Page

Look and Feel


Set this to false if the system does not allow users to modify the look and feel.

Defaults:

    look.and.feel.modifiable=true


Set the default layout template ID.

Defaults:

    default.layout.template.id=2_columns_ii


Set the default portlet decorator CSS class.

Defaults:

    default.portlet.decorator.css.class=decorate


Set the default portlet decorator ID.

Defaults:

    default.portlet.decorator.id=decorate


Set the default theme ID for regular themes.

Defaults:

    default.regular.theme.id=classic_WAR_classictheme


Set the default color scheme ID for regular themes.

Defaults:

    default.regular.color.scheme.id=01


Set this to true if you want a change in the theme selection of the public or private group to automatically be applied to the other (i.e. if public and private group themes should always be the same).

Defaults:

    theme.sync.on.group=false


Top of Page

Request


Portlets that have been configured to use private request attributes in liferay-portlet.xml may still want to share some request attributes. This property allows you to configure which request attributes will be shared. Set a comma delimited list of attribute names that will be shared when the attribute name starts with one of the specified attribute names. For example, if you set the value to "hello_,world_", then all attribute names that start with "hello_" or "world_" will be shared.

Defaults:

    request.shared.attributes=LIFERAY_SHARED_


Set a comma delimited list of Java packages that have to be unwrapped by servlet requests managing. See LPS-67793 for more information.

Defaults:

    request.unwrap.packages=com.liferay.,com.ibm.ws.cache.servlet.


Top of Page

Session


Set the maximum number of key value pairs that can be stored in the session via SessionClicks. See LPS-20096 for more information.

Defaults:

    session.clicks.max.allowed.values=1024


Set the maximum size of key and value terms that can be stored in the session via SessionClicks. See LPS-20096 for more information.

Defaults:

    session.clicks.max.size.terms=1024


Specify the delimiter for parsing compound session IDs.

This addresses an issue with Weblogic and all application servers where the application server appends a unique JVM code to the session ID. See LPS-18587.

Set a blank delimiter for the portal to attempt to detect a delimiter based on the application server.

Defaults:

    session.id.delimiter=
    session.id.weblogic.delimiter=!


Specify the maximum number of sessions allowed. A value of 0 or less than 0 means there is no limit. A value greater than 0 limits the number of sessions by invalidating newer sessions.

This property is not used unless the session max allowed filter is enabled.

Defaults:

    session.max.allowed=0


Specify the number of minutes before a session expires. This value is always overridden by the value set in web.xml.

Defaults:

    session.timeout=30


Specify the number of minutes before a warning is sent to the user informing the user of the session expiration. Specify 0 to disable any warnings.

Defaults:

    session.timeout.warning=1


Set the auto-extend mode to true to avoid having to ask the user whether to extend the session or not. Instead, it will be automatically extended. The purpose of this mode is to keep the session open as long as the user's browser is open with a portal page loaded. It is recommended to use this setting along with a smaller "session.timeout", such as 5 minutes, for better performance.

Defaults:

    session.timeout.auto.extend=false


When the property "session.timeout.auto.extend" is set to true, set the number of seconds between when the extend process is launched and the actual expiration of the session.

Defaults:

    session.timeout.auto.extend.offset=0


Set this to true if the user is redirected to the default page when the session expires.

Defaults:

    session.timeout.redirect.on.expire=false


Portlets that have been configured to use private session attributes in liferay-portlet.xml may still want to share some session attributes. This property allows you to configure which session attributes will be shared. Set a comma delimited list of attribute names that will be shared when the attribute name starts with one of the specified attribute names. For example, if you set the value to "hello_,world_", then all attribute names that start with "hello_" or "world_" will be shared.

Note that this property is used to specify the sharing of session attributes from the portal to the portlet. This is not used to specify session sharing between portlet WARs or from the portlet to the portal.

Defaults:

    session.shared.attributes=COMPANY_,LIFERAY_SHARED_,org.apache.struts.action.LOCALE,PORTLET_RENDER_PARAMETERS_,PUBLIC_RENDER_PARAMETERS_POOL_,USER_


Explicitly exclude attributes that are shared from the portal to portlets.

Defaults:

    session.shared.attributes.excludes=USER_PASSWORD


Set this to true to store the user's password in the session.

Defaults:

    session.store.password=false


Set this to false to disable all persistent cookies. Features like automatically logging in will not work.

Defaults:

    session.enable.persistent.cookies=true


Set this to true to enable sessions when cookies are disabled. See LEP-4787. This behavior is configurable because enabling it can break certain setups.

Defaults:

    session.enable.url.with.session.id=false


The login process sets several cookies if persistent cookies are enabled. Set this property to set the domain of those cookies.

Examples:

    session.cookie.domain=


Set this to true to use the full hostname for cookie domain values. By default the domain is trimmed to use only the root domain to allow cross domain logins.

Defaults:

    session.cookie.use.full.hostname=false
    session.cookie.use.full.hostname[tomcat]=true


Set this to true to invalidate the session when a user logs into the portal. This helps prevent 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.

Defaults:

    session.enable.phishing.protection=true


Set a comma delimited list of attribute names that will be copied to the new session when the property "session.enable.phishing.protection" is set to true.

Defaults:

    session.phishing.protected.attributes=CAS_LOGIN,HTTPS_INITIAL,LAST_PATH,OPEN_ID_CONNECT_SESSION


Set this to true to test whether users have cookie support before allowing them to sign in.

Defaults:

    session.test.cookie.support=true


Set this to true to allow com.liferay.portal.kernel.servlet.SerializableSessionAttributeListener to test if an added session variable is serializable. Unserializable values stored into the session will cause a session to not replicate if session replication was enabled by the application server.

Defaults:

    session.verify.serializable.attribute=true


Set this to true to disable sessions. Doing this will use cookies to remember the user across requests. This is useful if you want to scale very large sites where the user may be sent to a different server for each request. The drawback to this approach is that you must not rely on the API for sessions provided by the servlet and portlet specs.

This feature is only available for Tomcat and requires that you set Tomcat's Manager class to "com.liferay.support.tomcat.session.SessionLessManagerBase".

Setting this to true will forcibly set "layout.ajax.render.enable" to false since ajax rendering requires sessions to be enabled.

Defaults:

    session.disabled=false


Input a list of comma delimited class names that extend com.liferay.portal.struts.SessionAction. These classes will run at the specified event.


Servlet Session Create Event

Defaults:

    servlet.session.create.events=com.liferay.portal.events.SessionCreateAction


Servlet Session Destroy Event

Defaults:

    servlet.session.destroy.events=com.liferay.portal.events.SessionDestroyAction,com.liferay.portal.events.ChannelSessionDestroyAction


Set this to true to track user clicks in memory for the duration of a user's session. Setting this to true allows you to view all live sessions in the Admin portlet.

Defaults:

    session.tracker.memory.enabled=true


Set this to true to track user clicks in the database after a user's session is invalidated. Setting this to true allows you to generate usage reports from the database. Use this cautiously because this will store a lot of usage data.

Defaults:

    session.tracker.persistence.enabled=false


Set this to true to convert the tracked paths to friendly URLs.

Defaults:

    session.tracker.friendly.paths.enabled=false


Enter a list of comma delimited paths that should not be tracked.

Defaults:

    session.tracker.ignore.paths=\
        /portal/render_portlet,\
        \
        /document_library/get_file


Top of Page

JAAS


Set this to false to disable JAAS security checks. Disabling JAAS speeds up login. JAAS must be disabled if administrators are to be able to impersonate other users.

Defaults:

    portal.jaas.enable=false


JAAS can authenticate users based on their email address, screen name, user ID, or login as determined by the property "company.security.auth.type".

Defaults:

    portal.jaas.auth.type=userId

Examples:

    portal.jaas.auth.type=emailAddress
    portal.jaas.auth.type=screenName
    portal.jaas.auth.type=login


By default, com.liferay.portal.security.jaas.PortalLoginModule loads the correct JAAS login module based on what application server or servlet container the portal is deployed on. Set a JAAS implementation class to override this behavior.

Examples:

    portal.jaas.impl=


Some JAAS login modules only work with a plain text password. Set this property to true to pass plain text passwords to JAAS.

Defaults:

    portal.jaas.plain.password=false


The JAAS process may pass in an encrypted password and the authentication will only succeed if there is an exact match. Set this property to false to relax that behavior so the user can input an unencrypted password.

Defaults:

    portal.jaas.strict.password=false


Set this to true to enable administrators to impersonate other users.

Defaults:

    portal.impersonation.enable=true


This sets the default impersonation URL of the portal. This property is not used if the company has a home URL set.

Defaults:

    portal.impersonation.default.url=/web/guest


Top of Page

JNDI


Set the configuration values for the JNDI context. Any property prefixed with "jndi.environment." will be passed to the JNDI context as an environment variable. The valid values are those specified in javax.naming.Context.

Examples:

    jndi.environment.java.naming.security.credentials=
    jndi.environment.java.naming.security.principal=


Top of Page

Security Manager


Set this property to "default" to use the default security manager configured by the application server. A security manager will not be used if the application server did not configure one.

Set this property to "liferay" to use Liferay's security manager if the application server has not configured a security manager.

Defaults:

    portal.security.manager.strategy=default


Set the PACL policy checker to use for checking a security manager permission.

Defaults:

    portal.security.manager.pacl.policy.checker[com.liferay.portal.kernel.security.pacl.permission.PortalHookPermission]=com.liferay.portal.security.pacl.checker.PortalHookChecker
    portal.security.manager.pacl.policy.checker[com.liferay.portal.kernel.security.pacl.permission.PortalMessageBusPermission]=com.liferay.portal.security.pacl.checker.PortalMessageBusChecker
    portal.security.manager.pacl.policy.checker[com.liferay.portal.kernel.security.pacl.permission.PortalRuntimePermission]=com.liferay.portal.security.pacl.checker.PortalRuntimeChecker
    portal.security.manager.pacl.policy.checker[com.liferay.portal.kernel.security.pacl.permission.PortalServicePermission]=com.liferay.portal.security.pacl.checker.PortalServiceChecker
    portal.security.manager.pacl.policy.checker[java.awt.AWTPermission]=com.liferay.portal.security.pacl.checker.AWTChecker
    portal.security.manager.pacl.policy.checker[java.io.FilePermission]=com.liferay.portal.security.pacl.checker.FileChecker
    portal.security.manager.pacl.policy.checker[java.io.SerializablePermission]=com.liferay.portal.security.pacl.checker.DefaultRejectChecker
    portal.security.manager.pacl.policy.checker[java.lang.RuntimePermission]=com.liferay.portal.security.pacl.checker.RuntimeChecker
    portal.security.manager.pacl.policy.checker[java.lang.reflect.ReflectPermission]=com.liferay.portal.security.pacl.checker.ReflectChecker
    portal.security.manager.pacl.policy.checker[java.net.NetPermission]=com.liferay.portal.security.pacl.checker.NetChecker
    portal.security.manager.pacl.policy.checker[java.net.SocketPermission]=com.liferay.portal.security.pacl.checker.SocketChecker
    portal.security.manager.pacl.policy.checker[java.security.SecurityPermission]=com.liferay.portal.security.pacl.checker.SecurityChecker
    portal.security.manager.pacl.policy.checker[java.sql.SQLPermission]=com.liferay.portal.security.pacl.checker.DefaultRejectChecker
    portal.security.manager.pacl.policy.checker[java.util.PropertyPermission]=com.liferay.portal.security.pacl.checker.PropertyChecker
    portal.security.manager.pacl.policy.checker[javax.management.MBeanPermission]=com.liferay.portal.security.pacl.checker.MBeanChecker
    portal.security.manager.pacl.policy.checker[javax.management.MBeanServerPermission]=com.liferay.portal.security.pacl.checker.MBeanChecker
    portal.security.manager.pacl.policy.checker[javax.management.MBeanTrustPermission]=com.liferay.portal.security.pacl.checker.MBeanChecker
    portal.security.manager.pacl.policy.checker[javax.management.remote.SubjectDelegationPermission]=com.liferay.portal.security.pacl.checker.MBeanChecker
    portal.security.manager.pacl.policy.checker[javax.net.ssl.SSLPermission]=com.liferay.portal.security.pacl.checker.DefaultRejectChecker

Examples:

    portal.security.manager.pacl.policy.checker[java.lang.management.ManagementPermission]=com.liferay.portal.security.pacl.checker.DefaultAcceptChecker
    portal.security.manager.pacl.policy.checker[java.security.AllPermission]=
    portal.security.manager.pacl.policy.checker[java.security.UnresolvedPermission]=
    portal.security.manager.pacl.policy.checker[java.util.logging.LoggingPermission]=com.liferay.portal.security.pacl.checker.DefaultAcceptChecker
    portal.security.manager.pacl.policy.checker[javax.security.auth.AuthPermission]=com.liferay.portal.security.pacl.checker.DefaultAcceptChecker
    portal.security.manager.pacl.policy.checker[javax.security.auth.PrivateCredentialPermission]=com.liferay.portal.security.pacl.checker.DefaultAcceptChecker
    portal.security.manager.pacl.policy.checker[javax.security.auth.kerberos.DelegationPermission]=com.liferay.portal.security.pacl.checker.DefaultAcceptChecker
    portal.security.manager.pacl.policy.checker[javax.security.auth.kerberos.ServicePermission]=com.liferay.portal.security.pacl.checker.DefaultAcceptChecker
    portal.security.manager.pacl.policy.checker[javax.sound.sampled.AudioPermission]=com.liferay.portal.security.pacl.checker.DefaultAcceptChecker


Set the default read paths used by com.liferay.portal.security.pacl.checker.FileChecker.

Defaults:

    portal.security.manager.file.checker.default.read.paths[glassfish]=\
        ${liferay.web.portal.dir}html/common/-,\
        ${liferay.web.portal.dir}html/taglib/-

Defaults:

    portal.security.manager.file.checker.default.read.paths[jetty]=\
        ${liferay.web.portal.dir},\
        ${liferay.web.portal.dir}html/common/-,\
        ${liferay.web.portal.dir}html/taglib/-

Defaults:

    portal.security.manager.file.checker.default.read.paths[resin]=\
        ${resin.home}ext-lib/-,\
        ${liferay.web.portal.dir},\
        ${liferay.web.portal.dir}html/common/-,\
        ${liferay.web.portal.dir}html/taglib/-

Defaults:

    portal.security.manager.file.checker.default.read.paths[weblogic]=\
        ${auto.deploy.installed.dir}/${plugin.servlet.context.name}/-,\
        ${auto.deploy.installed.dir}/ROOT/html/common/-,\
        ${auto.deploy.installed.dir}/ROOT/html/taglib/-

Defaults:

    portal.security.manager.file.checker.default.read.paths[websphere]=\
        ${liferay.web.portal.dir}html/common/-,\
        ${liferay.web.portal.dir}html/taglib/-,\
        ${liferay.web.portal.dir}WEB-INF/classes,\
        ${liferay.web.portal.dir}WEB-INF/classes/html/common/-,\
        ${liferay.web.portal.dir}WEB-INF/classes/html/taglib/-


Set the list of classes that will be preloaded by the PreloadClassloader to be made available to plugins when the portal security manager is enabled. These classes will be exempt from the security checks that result from class loading.

Defaults:

    portal.security.manager.preload.classloader.classes=\
        org.aopalliance.aop.Advice,\
        org.springframework.aop.Advisor,\
        org.springframework.aop.SpringProxy,\
        org.springframework.aop.TargetSource,\
        org.springframework.aop.framework.Advised,\
        org.springframework.aop.framework.AopConfigException,\
        org.springframework.jmx.export.MBeanExporter


Top of Page

LDAP


You can write your own class that implements com.liferay.portal.security.ldap.AttributesTransformer to transform the LDAP attributes before a user or group is imported to the LDAP store.

This property is not read by the portal except for portal properties overridden by liferay-hook.xml. It remains here only as a reference.

Examples:

    ldap.attrs.transformer.impl=com.liferay.portal.security.ldap.DefaultAttributesTransformer


Top of Page

Basic Authentication


Set this to true to require a password when using basic authentication. Only set this to false if additional security measures are in place to ensure users have been properly authenticated.

Defaults:

    basic.auth.password.required=true


Top of Page

NTLM


See http://jcifs.samba.org/src/docs/ntlmhttpauth.html for more available properties.

Examples:

    jcifs.netbios.cachePolicy=30
    jcifs.smb.client.soTimeout=35000


Top of Page

OpenID

Examples:

    open.id.providers=yahoo

Examples:

    open.id.ax.schema[default]=email,firstname,lastname
    open.id.ax.type.email[default]=http://schema.openid.net/contact/email
    open.id.ax.type.firstname[default]=http://schema.openid.net/namePerson/first
    open.id.ax.type.lastname[default]=http://schema.openid.net/namePerson/last

Examples:

    open.id.ax.schema[yahoo]=email,fullname
    open.id.ax.type.email[yahoo]=http://axschema.org/contact/email
    open.id.ax.type.fullname[yahoo]=http://axschema.org/namePerson
    open.id.url[yahoo]=open.login.yahooapis.com


Top of Page

Request Header


Set this to true to automatically import users from LDAP if they do not exist in the portal. The property "auto.login.hooks" must contain a reference to the class com.liferay.portal.security.auto.login.request.header.RequestHeaderAutoLogin to enable request header authentication.

Examples:

    request.header.auth.import.from.ldap=false


Input a list of comma delimited IPs that can automatically authenticate via request headers. Input a blank list to allow any IP to automatically authenticate via request headers. SERVER_IP will be replaced with the IP of the host server.

Examples:

    request.header.auth.hosts.allowed=


Input a list of comma delimited init parameters that should never be set in the request header by the header filter.

Defaults:

    request.header.ignore.init.params=url-regex-ignore-pattern,url-regex-pattern


Top of Page

Authenticated User UUID Store


Set this to true to enable user UUID store. User UUID store is deprecated and will be removed in a future release.

Defaults:

    auth.user.uuid.store.enabled=false


Top of Page

Authentication Pipeline


Input a list of comma delimited class names that implement com.liferay.portal.security.auth.Authenticator. These classes will run before or after the portal authentication begins.

The Authenticator class defines the constant values that should be used as return codes from the classes implementing the interface. If authentication is successful, return SUCCESS; if the user exists but the passwords do not match, return FAILURE; and if the user does not exist on the system, return DNE.

In the pre-authentication pipeline, if you want to skip password checking by the internal portal authentication, the authenticator should return SKIP_LIFERAY_CHECK. This is needed if passwords are not imported to the portal.

Constants in Authenticator:

     public static final int DNE = 0;
     public static final int FAILURE = -1;
     public static final int SKIP_LIFERAY_CHECK = 2;
     public static final int SUCCESS = 1;

In case you have several classes in the authentication pipeline, all of them have to return SKIP_LIFERAY_CHECK or SUCCESS if you want the user to be able to login. If one of the authenticators returns DNE OR FAILURE, the login fails.

Under certain circumstances, you might want to keep the information in the portal database in sync with an external database or an LDAP server. This can easily be achieved by implementing a class via LDAPAuth that updates the information stored in the portal user database whenever a user signs in.

Each portal instance can be configured at run time to either authenticate based on user IDs or email addresses. See the Admin portlet for more information.

Available authenticators are:

     com.liferay.portal.security.auth.LDAPAuth

See the LDAP properties to configure the behavior of the LDAPAuth class.

This property is deprecated and only provided for documentation purposes.

Examples:

    auth.pipeline.pre=com.liferay.portal.security.auth.LDAPAuth
    auth.pipeline.post=


Set this to true to enable password checking by the internal portal authentication. If set to false, you're essentially delegating password checking to the authenticators configured in "auth.pipeline.pre" and "auth.pipeline.post" settings.

Defaults:

    auth.pipeline.enable.liferay.check=true


Input a list of comma delimited class names that implement com.liferay.portal.security.auth.AuthFailure. These classes will run when a user has a failed login or when a user has reached the maximum number of failed logins.

This property is deprecated and only provided for documentation purposes.

Examples:

    auth.failure=com.liferay.portal.security.auth.LoginFailure
    auth.max.failures=com.liferay.portal.security.auth.LoginMaxFailures


Set the following to true if users are allowed to have simultaneous logins from different sessions. This property is not used unless the property "live.users.enabled" is set to true.

Defaults:

    auth.simultaneous.logins=true


Set this to true if users are forwarded to the last visited path upon successful login. If set to false, users will be forwarded to their default layout page.

Defaults:

    auth.forward.by.last.path=true


The login page reads a redirect by a parameter named "redirect". If this property is set to true, then users will be redirected to the given redirect path upon successful login. If the user does not have permission to view that page, then the rule set by the property "auth.forward.by.last.path" will apply.

You can set the redirect manually from another application by appending the "redirect" parameter in a url that looks like this: /c/portal/login?redirect=%2Fgroup%2Femployees%2Fcalendar. This url will redirect the user to the path "/group/employees/calendar" upon successful login.

Defaults:

    auth.forward.by.redirect=true


Enter a list of comma delimited paths that can be considered part of the last visited path.

Defaults:

    auth.forward.last.paths=/document_library/get_file


Enter a URL that will be used to login portal users whenever needed. By default, the portal's login page is used.

Examples:

    auth.login.url=/web/guest/home


Set this to true to prompt a guest user to login when attempting to access a protected page resource in the portal. By setting this value to false, the portal will inform all users that a requested resource is not found if they have no entitlements to view the resource. The portal will not prompt for login even if the user is a guest user. This behavior complies with OWASP best practices.

Defaults:

    auth.login.prompt.enabled=true


Enter a friendly URL of a page that will be used to login portal users whenever the user is navigating a site and authentication is needed. By default, the portal's login page or the URL set in the property "auth.login.url" is used.

Defaults:

    auth.login.site.url=/login


Enter the name of the login portlet used in a page identified by the URL of the previous property (if one has been set). This will allow the portlet to have access to the redirect parameter and forward the user to the page he was trying to access, when necessary. You should leave the default value unless you have your own custom login portlet.

Defaults:

    auth.login.portlet.name=com_liferay_login_web_portlet_LoginPortlet


Set this to true to disable any users from logging into the portal. Preventing users from logging into the portal provides a read-only version of the portal that can be used to minimize site outages during upgrades.

Defaults:

    auth.login.disabled=false
    auth.login.disabled.path=/portal/login_disabled


Enter a list of comma delimited paths that do not require authentication.

Defaults:

    auth.public.paths=\
        /activities/rss,\
        \
        /asset/get_categories,\
        \
        /document_library/find_file_entry,\
        /document_library/find_folder,\
        /document_library/get_file,\
        \
        /dynamic_data_lists/find_record,\
        \
        /dynamic_data_mapping/render_structure_field,\
        \
        /flags/edit_flag,\
        \
        /iframe/proxy,\
        \
        /image_gallery_display/find_folder,\
        /image_gallery_display/find_image,\
        \
        /login/facebook_connect_oauth,\
        \
        /message_boards/find_category,\
        /message_boards/find_message,\
        /message_boards/find_thread,\
        /message_boards/get_message_attachment,\
        /message_boards/rss,\
        \
        /portal/comment/edit_discussion,\
        /portal/comment/get_comments,\
        /portal/emoticons,\
        /portal/expire_session,\
        /portal/extend_session,\
        /portal/extend_session_confirm,\
        /portal/json_service,\
        /portal/license,\
        /portal/logout,\
        /portal/open_id_request,\
        /portal/open_id_response,\
        /portal/portlet_url,\
        /portal/robots,\
        /portal/session_click,\
        /portal/session_tree_js_click,\
        /portal/sitemap,\
        /portal/status


Top of Page

Authentication Verifier


Input a list of comma delimited class names that implement com.liferay.portal.security.auth.AuthVerifier. These classes are used to verify whether a request is authenticated or not.

This property is not read by the portal except for portal properties overridden by liferay-hook.xml. It remains here only as a reference.

Examples:

    auth.verifier.pipeline=com.liferay.portal.security.auth.verifier.basic.auth.header.BasicAuthHeaderAuthVerifier,com.liferay.portal.security.auth.verifier.DigestAuthenticationAuthVerifier,com.liferay.portal.security.auth.verifier.request.parameter.RequestParameterAuthVerifier,com.liferay.portal.security.auth.verifier.PortalSessionAuthVerifier,com.liferay.portal.security.auth.verifier.internal.tunnel.TunnelAuthVerifier


Each authentication verifier can have custom properties set via the property prefix "auth.verifier." and the authentication verifier's simple class name. All property suffixes are stripped of their prefix and passed directly to the authentication verifier. For example, the property "auth.verifier.BasicAuthHeaderAuthVerifier.hosts.allowed" is passed to BasicAuthHeaderAuthVerifier as "hosts.allowed".

The expected property suffixes are "hosts.allowed" and "urls". See the property "json.service.auth.token.hosts.allowed" for the accepted values for the property suffix "hosts.allowed".

The property suffix "urls.includes" denotes the valid URLs that apply to an authentication verifier.

The property suffix "urls.excludes" denotes URLs that will not be handled even if they match the patterns set in "urls.includes".


BasicAuthHeaderAuthVerifier

Examples:

    auth.verifier.BasicAuthHeaderAuthVerifier.hosts.allowed=
    auth.verifier.BasicAuthHeaderAuthVerifier.urls.includes=/api/*,/xmlrpc/*
    auth.verifier.BasicAuthHeaderAuthVerifier.urls.excludes=/api/liferay/do


DigestAuthenticationAuthVerifier

Examples:

    auth.verifier.DigestAuthenticationAuthVerifier.hosts.allowed=
    auth.verifier.DigestAuthenticationAuthVerifier.urls.includes=N/A


PortalSessionAuthVerifier

Examples:

    auth.verifier.PortalSessionAuthVerifier.hosts.allowed=
    auth.verifier.PortalSessionAuthVerifier.urls.includes=\
        /api/json/*,\
        /api/jsonws/*,\
        /c/portal/json_service/*


RequestParameterAuthVerifier

Examples:

    auth.verifier.RequestParameterAuthVerifier.hosts.allowed=
    auth.verifier.RequestParameterAuthVerifier.urls.includes=N/A


Top of Page

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.

Defaults:

    auth.token.check.enabled=true


Set the authentication token class. This class must implement com.liferay.portal.security.auth.AuthToken. This class is used to prevent CSRF attacks. See https://issues.liferay.com/browse/LPS-8399 for more information.

This property is not read by the portal except for portal properties overridden by liferay-hook.xml. It remains here only as a reference.

Examples:

    auth.token.impl=com.liferay.portal.security.auth.SessionAuthToken


Input a list of comma delimited struts actions that will not be checked for an authentication token.

Defaults:

    auth.token.ignore.actions=\
        /asset/rss,\
        \
        /blogs/rss,\
        /blogs/trackback,\
        \
        /blogs_aggregator/rss,\
        \
        /login/create_account,\
        /login/login,\
        \
        /message_boards/rss,\
        \
        /portal/comment/get_comments


Set a list of comma delimited origins that will not be checked for an authentication token.

Examples:

    auth.token.ignore.origins=\
        com.liferay.portal.action.JSONServiceAction:com.liferay.portlet.expando.service.ExpandoValueServiceUtil#getJSONData,\
        com.liferay.portal.jsonwebservice.JSONWebServiceServiceAction:/classname/,\
        com.liferay.portal.jsonwebservice.JSONWebServiceServiceAction:/user/get-user-by-email-address,\
        com.liferay.portlet.asset.action.GetCategoriesAction,\
        com.liferay.portlet.portletconfiguration.action.GetLookAndFeelAction


Set a list of comma delimited portlet IDs that will not be checked for an authentication token.

Defaults:

    auth.token.ignore.portlets=


Set the length of the authentication token. Longer auth tokens will require more CPU cycles to generate and may impact overall performance.

Defaults:

    auth.token.length=8


Set the shared secret that is used for requests where it is not possible to generate an authentication token (i.e. WSRP).

Examples:

    auth.token.shared.secret=


Top of Page

Auto Login


Input a list of comma delimited class names that implement com.liferay.portal.kernel.security.auto.login.AutoLogin. These classes will run in consecutive order for all unauthenticated users until one of them returns a valid user ID and password combination. If no valid combination is returned, then the request continues to process normally. If a valid combination is returned, then the portal will automatically login that user with the returned user ID and password combination.

For example, com.liferay.portal.security.auto.login.remember.me.RememberMeAutoLogin reads from a cookie to automatically log in a user who previously logged in while checking on the "Remember Me" box.

This interface allows deployers to easily configure the portal to work with other SSO servers. See com.liferay.portal.security.sso.cas.internal.auto.login.CASAutoLogin for an example of how to configure the portal with Yale's SSO server.

This property is not read by the portal except for portal properties overridden by liferay-hook.xml. It remains here only as a reference.

Examples:

    auto.login.hooks=com.liferay.portal.security.sso.cas.internal.auto.login.CASAutoLogin,com.liferay.portal.security.sso.facebook.connect.auto.login.FacebookConnectAutoLogin,com.liferay.portal.security.sso.ntlm.auto.login.NtlmAutoLogin,com.liferay.portal.security.sso.openid.auto.login.OpenIdAutoLogin,com.liferay.portal.security.sso.opensso.auto.login.OpenSSOAutoLogin,com.liferay.portal.security.auto.login.remember.me.RememberMeAutoLogin


Set the hosts that will be ignored for auto login.

Defaults:

    auto.login.ignore.hosts=


Set the paths that will be ignored for auto login.

Defaults:

    auto.login.ignore.paths=


Top of Page

SSO with MAC (Message Authentication Code)


To use SSO with MAC, post to a URL like:

     http://localhost:8080/c/portal/login?cmd=already-registered&login=&password=

Pass the MAC in the password field. Make sure the MAC gets URL encoded because it might contain characters not allowed in a URL.

SSO with MAC also requires that you set the following property in system.properties:

     com.liferay.util.servlet.SessionParameters=false

See the following links:

     https://issues.liferay.com/browse/LEP-1288
     http://en.wikipedia.org/wiki/Message_authentication_code

Set this to true to enable SSO with MAC.

Defaults:

    auth.mac.allow=false


Set the algorithm to use for MAC encryption.

Defaults:

    auth.mac.algorithm=MD5


Set the shared key used to generate the MAC. The shared key must not be empty and it should be sufficiently long and complex to withstand a brute force attack.

Defaults:

    auth.mac.shared.key=


Top of Page

Passwords


Set the following encryption algorithm to designate the password encryption algorithm to migrate from. This is only necessary if upgrading from a release prior to 6.2 or if you wish to switch password encryption algorithms when there are existing users with passwords in the portal.

Examples:

    passwords.encryption.algorithm.legacy=BCRYPT
    passwords.encryption.algorithm.legacy=MD2
    passwords.encryption.algorithm.legacy=MD5
    passwords.encryption.algorithm.legacy=NONE
    passwords.encryption.algorithm.legacy=SHA
    passwords.encryption.algorithm.legacy=SHA-256
    passwords.encryption.algorithm.legacy=SHA-384
    passwords.encryption.algorithm.legacy=SSHA
    passwords.encryption.algorithm.legacy=UFC-CRYPT


Set the following encryption algorithm to encrypt passwords. The default algorithm is PBKDF2WithHmacSHA1/160/128000, generating 160 bit hashes using 128,000 rounds.

It is possible to decrease the rounds value in case of slow production hardware, but be aware that 128,000 is the recommended value for 2014 by OWASP.

If set to NONE, passwords are stored in the database as plain text.

Defaults:

    passwords.encryption.algorithm=PBKDF2WithHmacSHA1/160/128000

Examples:

    passwords.encryption.algorithm=BCRYPT/10
    passwords.encryption.algorithm=MD2
    passwords.encryption.algorithm=MD5
    passwords.encryption.algorithm=NONE
    passwords.encryption.algorithm=SHA
    passwords.encryption.algorithm=SHA-256
    passwords.encryption.algorithm=SHA-384
    passwords.encryption.algorithm=SSHA
    passwords.encryption.algorithm=UFC-CRYPT


Digested passwords are encoded via base64 or hex encoding. The default is base64.

Defaults:

    passwords.digest.encoding=base64

Examples:

    passwords.digest.encoding=hex


Input a class name that implements com.liferay.portal.security.pwd.Toolkit. This class will be called to generate and validate passwords.

This property is not read by the portal except for portal properties overridden by liferay-hook.xml. It remains here only as a reference.

Examples:

    passwords.toolkit=com.liferay.portal.security.pwd.PasswordPolicyToolkit
    passwords.toolkit=com.liferay.portal.security.pwd.RegExpToolkit


If you choose to use com.liferay.portal.security.pwd.PasswordPolicyToolkit as your password toolkit, you can choose either static or dynamic password generation. Static is set through the property "passwords.passwordpolicytoolkit.static" and dynamic uses the class com.liferay.util.PwdGenerator to generate the password. If you are using LDAP password syntax checking, you will also have to use the static generator so that you can guarantee that passwords obey its rules.

Defaults:

    passwords.passwordpolicytoolkit.generator=dynamic
    passwords.passwordpolicytoolkit.static=iheartliferay

Examples:

    passwords.passwordpolicytoolkit.generator=static


Set the character sets for password generation. These must be a subset of validation character sets.

Defaults:

    passwords.passwordpolicytoolkit.generator.charset.lowercase=abcdefghjkmnpqrstuvwxyz
    passwords.passwordpolicytoolkit.generator.charset.numbers=0123456789
    passwords.passwordpolicytoolkit.generator.charset.symbols=_.!@$*=-?
    passwords.passwordpolicytoolkit.generator.charset.uppercase=ABCDEFGHJKLMNPQRSTUVWXYZ


Set the character sets for password validation.

Defaults:

    passwords.passwordpolicytoolkit.validator.charset.lowercase=abcdefghijklmnopqrstuvwxyz
    passwords.passwordpolicytoolkit.validator.charset.numbers=0123456789
    passwords.passwordpolicytoolkit.validator.charset.symbols=_.!@$*=-?
    passwords.passwordpolicytoolkit.validator.charset.uppercase=ABCDEFGHIJKLMNOPQRSTUVWXYZ


If you choose to use com.liferay.portal.security.pwd.RegExpToolkit as your password toolkit, set the regular expression pattern that will be used to generate and validate passwords.

Note that \ is replaced with \\ to work in Java.

The first pattern ensures that passwords must have at least 4 valid characters consisting of digits or letters.

The second pattern ensures that passwords must have at least 8 valid characters consisting of digits or letters.

Defaults:

    passwords.regexptoolkit.pattern=(?=.{4})(?:[a-zA-Z0-9]*)

Examples:

    passwords.regexptoolkit.pattern=(?=.{8})(?:[a-zA-Z0-9]*)


Set the length and key for generating passwords.

Defaults:

    passwords.regexptoolkit.charset=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
    passwords.regexptoolkit.length=8

Examples:

    passwords.regexptoolkit.charset=0123456789
    passwords.regexptoolkit.length=4


Set the properties of the default password policy.

Defaults:

    passwords.default.policy.allow.dictionary.words=true
    passwords.default.policy.changeable=true
    passwords.default.policy.change.required=true
    passwords.default.policy.check.syntax=false
    passwords.default.policy.expireable=false
    passwords.default.policy.grace.limit=0
    passwords.default.policy.history=false
    passwords.default.policy.history.count=6
    passwords.default.policy.lockout=false
    passwords.default.policy.lockout.duration=0
    passwords.default.policy.max.age=8640000
    passwords.default.policy.max.failure=3
    passwords.default.policy.min.age=0
    passwords.default.policy.min.alphanumeric=0
    passwords.default.policy.min.length=6
    passwords.default.policy.min.lowercase=0
    passwords.default.policy.min.numbers=1
    passwords.default.policy.min.symbols=0
    passwords.default.policy.min.uppercase=1
    passwords.default.policy.name=Default Password Policy
    passwords.default.policy.regex=(?=.{4})(?:[a-zA-Z0-9]*)
    passwords.default.policy.reset.failure.count=600
    passwords.default.policy.reset.ticket.max.age=86400
    passwords.default.policy.warning.time=86400


Top of Page

Permissions


Set the default permission checker class used by com.liferay.portal.security.permission.PermissionCheckerFactory to check permissions for actions on objects. This class can be overriden with a custom class that implements com.liferay.portal.security.permission.PermissionChecker.

Defaults:

    permissions.checker=com.liferay.portal.security.permission.AdvancedPermissionChecker

Examples:

    permissions.checker=com.liferay.portal.security.permission.SimplePermissionChecker


Set this to true to configure permission caching to block. See the property "ehcache.blocking.cache.allowed" for more information.

Defaults:

    permissions.object.blocking.cache=false


Configure this threshold to indicate when to use the custom SQL finder to check resource permissions.

Defaults:

    permissions.role.resource.permission.query.threshold=10


Set this to true to enable inline SQL permission checks.

Defaults:

    permissions.inline.sql.check.enabled=true


Configure this threshold to indicate when to pass in the resource block IDs directly to the inline SQL statement and when to use a subselect to determine the resource block IDs.

Defaults:

    permissions.inline.sql.resource.block.query.threshold=100


Set this to true to use permission checking when reading custom attributes by default.

Defaults:

    permissions.custom.attribute.read.check.by.default=true


Set this to true to use permission checking when writing custom attributes by default.

Defaults:

    permissions.custom.attribute.write.check.by.default=true


Set the following to true to automatically check the view permission on parent categories or folders when checking the permission on a specific item.

For example, if set to true, to be able to have access to a document, a user must have the view permission on the document's folder and all its parent folders. Or, to have access to a comment, a user must have the view permission on the comments's category and all its parent categories.

Defaults:

    permissions.view.dynamic.inheritance=true


Set the following to true to enable propagation of permissions between models.

For example, when setting the permissions on a specific Wiki node, if you assign a role a permission (e.g. DELETE), then the assignment of that permission is also propagated to all Wiki pages that belong to that Wiki node.

The actual logic of how permissions are propagated among models is specified per portlet. See liferay-portlet.xml's use of the element "permission-propagator".

Defaults:

    permissions.propagation.enabled=false


Set this to true if resources should assume that all users have the Guest role. Set this to false if resources will not assume that all users have the Guest role and, thus, do not automatically inherit permissions that belong to the Guest role.

Setting this property to false may require users to grant permissions to roles like Site Member and User.

Defaults:

    permissions.check.guest.enabled=true


Top of Page

Startup Events


Input a list of comma delimited class names that extend com.liferay.portal.struts.SimpleAction. These classes will run at the specified event.


Global startup event that runs once when the portal initializes.

Defaults:

    global.startup.events=com.liferay.portal.events.GlobalStartupAction,com.liferay.portal.events.CryptoStartupAction


Application startup event that runs once for every web site instance of the portal that initializes.

Defaults:

    application.startup.events=com.liferay.portal.events.AppStartupAction,com.liferay.portal.events.ChannelHubAppStartupAction

Examples:

    application.startup.events=com.liferay.portal.events.AppStartupAction,com.liferay.portal.events.SampleAppStartupAction


Top of Page

Shutdown Events


Input a list of comma delimited class names that extend com.liferay.portal.struts.SimpleAction. These classes will run at the specified event.


Global shutdown event that runs once when the portal shuts down.

Defaults:

    global.shutdown.events=com.liferay.portal.events.GlobalShutdownAction


Application shutdown event that runs once for every web site instance of the portal that shuts down.

Defaults:

    application.shutdown.events=com.liferay.portal.events.AppShutdownAction,com.liferay.portal.events.ChannelHubAppShutdownAction


Programmatically kill the Java process on shutdown. This is a workaround for a bug in Tomcat and Linux where the process hangs on forever.

See https://issues.liferay.com/browse/LEP-2048 for more information.

Defaults:

    shutdown.programmatically.exit=false


Top of Page

Portal Events


Input a list of comma delimited class names that extend com.liferay.portal.kernel.events.Action. These classes will run before or after the specified event.


Servlet service event (the pre-service events have an associated error page and will forward to that page if an exception is thrown during excecution of the events). The pre-service events process before Struts processes the request. The post-service events process after Struts processes the request.

Defaults:

    servlet.service.events.pre=com.liferay.portal.events.ServicePreAction,com.liferay.portal.events.ThemeServicePreAction
    servlet.service.events.pre.error.page=/common/error.jsp
    servlet.service.events.post=com.liferay.portal.events.ServicePostAction

Examples:

    servlet.service.events.pre=com.liferay.portal.events.LogMemoryUsageAction,com.liferay.portal.events.LogThreadCountAction,com.liferay.portal.events.ServicePreAction,com.liferay.portal.events.DeviceServicePreAction,com.liferay.portal.events.ThemeServicePreAction
    servlet.service.events.pre=com.liferay.portal.events.LogSessionIdAction,com.liferay.portal.events.ServicePreAction,com.liferay.portal.events.DeviceServicePreAction,com.liferay.portal.events.ThemeServicePreAction
    servlet.service.events.pre=com.liferay.portal.events.ServicePreAction,com.liferay.portal.events.DeviceServicePreAction,com.liferay.portal.events.ThemeServicePreAction,com.liferay.portal.events.RandomLayoutAction
    servlet.service.events.pre=com.liferay.portal.events.ServicePreAction,com.liferay.portal.events.DeviceServicePreAction,com.liferay.portal.events.ThemeServicePreAction,com.liferay.portal.events.RandomLookAndFeelAction
    servlet.service.events.pre=com.liferay.portal.events.ServicePreAction,com.liferay.portal.events.DeviceServicePreAction,com.liferay.portal.events.ThemeServicePreAction,com.liferay.portal.events.SecureRequestAction


Login Event

Defaults:

    login.events.pre=com.liferay.portal.events.LoginPreAction
    login.events.post=com.liferay.portal.events.ChannelLoginPostAction,com.liferay.portal.events.DefaultLandingPageAction,com.liferay.portal.events.LoginPostAction


Logout Event

Defaults:

    logout.events.pre=com.liferay.portal.events.LogoutPreAction
    logout.events.post=com.liferay.portal.events.LogoutPostAction,com.liferay.portal.events.DefaultLogoutPageAction

Examples:

    logout.events.post=com.liferay.portal.events.LogoutPostAction,com.liferay.portal.events.GarbageCollectorAction


Top of Page

Default Landing Page


Set the default landing page path for logged in users relative to the server path. This is the page users are automatically redirected to after logging in. For example, if you want the default landing page to be http://localhost:8080/web/guest/login, set this to /web/guest/login. To activate this feature, set auth.forward.by.last.path to true. To customize the behavior, see com.liferay.portal.events.DefaultLandingPageAction in the "login.events.post" property above.

The following variables can be used: ${liferay:screenName} and ${liferay:userId}.

Defaults:

    default.landing.page.path=

Examples:

    default.landing.page.path=/web/guest/login
    default.landing.page.path=/user/${liferay:screenName}/home


Top of Page

Default Logout Page


Set the default logout page path for users relative to the server path. This is the page users are automatically redirected to after logging out. For example, if you want the default logout page to be http://localhost:8080/web/guest/logout, set this to /web/guest/logout. To activate this feature, set auth.forward.by.last.path to true. To customize the behavior, see com.liferay.portal.events.DefaultLogoutPageAction in the "logout.events.post" property above.

Defaults:

    default.logout.page.path=

Examples:

    default.logout.page.path=/web/guest/logout


Top of Page

Default Guest Public Layouts


The Guest group must have at least one public page. The settings for the initial public page are specified in the following properties.

If you need to add more than one page, set the property "default.guest.public.layouts.lar" to specifiy a LAR file instead.

For even more complex behavior, override the addDefaultGuestPublicLayouts method in com.liferay.portal.service.impl.GroupLocalServiceImpl.


Set the name of the public layout.

Defaults:

    default.guest.public.layout.name=Welcome


Set the layout template ID of the public layout.

Defaults:

    default.guest.public.layout.template.id=1_column


Set the portlet IDs for the columns specified in the layout template.

Defaults:

    default.guest.public.layout.column-1=com_liferay_hello_world_web_portlet_HelloWorldPortlet
    default.guest.public.layout.column-2=
    default.guest.public.layout.column-3=
    default.guest.public.layout.column-4=


Set the friendly url of the public layout.

Defaults:

    default.guest.public.layout.friendly.url=/home


Set the regular theme ID for the public layout.

Examples:

    default.guest.public.layout.regular.theme.id=classic_WAR_classictheme


Set the regular color scheme ID for the public layout.

Examples:

    default.guest.public.layout.regular.color.scheme.id=01


Specify a LAR file that can be used to create the guest public layouts. If this property is set, the previous layout properties will be ignored.

Examples:

    default.guest.public.layouts.lar=${liferay.home}/deploy/default_guest_public.lar


Top of Page

Default User Private Layouts


If the properties "layout.user.private.layouts.enabled" and "layout.user.private.layouts.auto.create" are both set to true, then users will have private layouts and they will be automatically created. The settings below are used for the creation of the initial private pages.

If you need to add more than one page, set the property "default.user.private.layouts.lar" to specifiy a LAR file instead.

For even more complex behavior, override the addDefaultUserPrivateLayouts method in com.liferay.portal.events.ServicePreAction.


Set the name of the private layout.

Defaults:

    default.user.private.layout.name=Welcome


Set the layout template ID of the private layout.

Defaults:

    default.user.private.layout.template.id=1_column


Set the portlet IDs for the columns specified in the layout template.

Defaults:

    default.user.private.layout.column-1=com_liferay_site_my_sites_web_portlet_MySitesPortlet
    default.user.private.layout.column-2=
    default.user.private.layout.column-3=
    default.user.private.layout.column-4=


Set the friendly url of the private layout.

Defaults:

    default.user.private.layout.friendly.url=/home


Set the regular theme ID for the private layout.

Defaults:

    default.user.private.layout.regular.theme.id=classic_WAR_classictheme


Set the regular color scheme ID for the private layout.

Examples:

    default.user.private.layout.regular.color.scheme.id=01


Specify a LAR file that can be used to create the user private layouts. If this property is set, the previous layout properties will be ignored.

Examples:

    default.user.private.layouts.lar=${liferay.home}/deploy/default_user_private.lar


Top of Page

Default User Public Layouts


If the properties "layout.user.public.layouts.enabled" and "layout.user.public.layouts.auto.create" are both set to true, then users will have public layouts and they will be automatically created. The settings below are used for the creation of the initial public pages.

If you need to add more than one page, set the property "default.user.public.layouts.lar" to specify a LAR file instead.

For even more complex behavior, override the addDefaultUserPublicLayouts method in com.liferay.portal.events.ServicePreAction.


Set the name of the public layout.

Defaults:

    default.user.public.layout.name=Welcome


Set the layout template ID of the public layout.

Defaults:

    default.user.public.layout.template.id=1_column


Set the portlet IDs for the columns specified in the layout template.

Defaults:

    default.user.public.layout.column-1=
    default.user.public.layout.column-2=
    default.user.public.layout.column-3=
    default.user.public.layout.column-4=


Set the friendly url of the public layout.

Defaults:

    default.user.public.layout.friendly.url=/home


Set the regular theme ID for the public layout.

Defaults:

    default.user.public.layout.regular.theme.id=classic_WAR_classictheme


Set the regular color scheme ID for the public layout.

Examples:

    default.user.public.layout.regular.color.scheme.id=01


Specify a LAR file that can be used to create the user public layouts. If this property is set, the previous layout properties will be ignored.

Examples:

    default.user.public.layouts.lar=${liferay.home}/deploy/default_user_public.lar


Top of Page

Default Admin


Set the default admin password.

Defaults:

    default.admin.password=test


Set the default admin screen name prefix.

Defaults:

    default.admin.screen.name=test


Set the default admin email address prefix.

Defaults:

    default.admin.email.address.prefix=test


Set the default admin first name.

Defaults:

    default.admin.first.name=Test


Set the default admin middle name.

Defaults:

    default.admin.middle.name=


Set the default admin last name.

Defaults:

    default.admin.last.name=Test


Top of Page

Layouts


Set whether or not private layouts are enabled. Set whether or not private layouts should be auto created if a user has no private layouts. If private layouts are not enabled, then the property "layout.user.private.layouts.auto.create" is assumed to be false.

Defaults:

    layout.user.private.layouts.enabled=true
    layout.user.private.layouts.auto.create=true


Set this to true if users must have the Power User role to have private pages.

Defaults:

    layout.user.private.layouts.power.user.required=false


Set whether or not public layouts are enabled. Set whether or not public layouts should be auto created if a user has no public layouts. If public layouts are not enabled, then the property "layout.user.public.layouts.auto.create" is assumed to be false.

Defaults:

    layout.user.public.layouts.enabled=true
    layout.user.public.layouts.auto.create=true


Set this to true if users must have the Power User role to have public pages.

Defaults:

    layout.user.public.layouts.power.user.required=false


Default settings layouts.

Defaults:

    layout.edit.page=/portal/layout/edit/portlet.jsp
    layout.view.page=/portal/layout/view/portlet.jsp
    layout.url=${liferay:mainPath}/portal/layout?p_l_id=${liferay:plid}&p_v_l_s_g_id=${liferay:pvlsgid}
    layout.url.friendliable=true
    layout.parentable=true
    layout.sitemapable=true
    layout.first.pageable=true

Examples:

    layout.configuration.action.update=
    layout.configuration.action.delete=


Settings for portlet layouts are inherited from the default settings.

Examples:

    layout.edit.page[portlet]=/portal/layout/edit/portlet.jsp
    layout.view.page[portlet]=/portal/layout/view/portlet.jsp
    layout.url[portlet]=${liferay:mainPath}/portal/layout?p_l_id=${liferay:plid}&p_v_l_s_g_id=${liferay:pvlsgid}
    layout.url.friendliable[portlet]=true
    layout.parentable[portlet]=true
    layout.configuration.action.update[portlet]=
    layout.configuration.action.delete[portlet]=


Settings for panel layouts.

Defaults:

    layout.edit.page[panel]=/portal/layout/edit/panel.jsp
    layout.view.page[panel]=/portal/layout/view/panel.jsp
    layout.url[panel]=${liferay:mainPath}/portal/layout?p_l_id=${liferay:plid}&p_v_l_s_g_id=${liferay:pvlsgid}
    layout.url.friendliable[panel]=true
    layout.parentable[panel]=true
    layout.first.pageable[panel]=true


Settings for embedded layouts.

Defaults:

    layout.edit.page[embedded]=/portal/layout/edit/embedded.jsp
    layout.view.page[embedded]=/portal/layout/view/embedded.jsp
    layout.url[embedded]=${liferay:mainPath}/portal/layout?p_l_id=${liferay:plid}&p_v_l_s_g_id=${liferay:pvlsgid}
    layout.url.friendliable[embedded]=true
    layout.parentable[embedded]=false
    layout.sitemapable[embedded]=true
    layout.first.pageable[embedded]=true

Examples:

    layout.configuration.action.update[embedded]=
    layout.configuration.action.delete[embedded]=


Settings for URL layouts.

Defaults:

    layout.edit.page[url]=/portal/layout/edit/url.jsp
    layout.view.page[url]=
    layout.url[url]=${url}
    layout.url.friendliable[url]=true
    layout.parentable[url]=false
    layout.sitemapable[url]=false
    layout.first.pageable[url]=false

Examples:

    layout.configuration.action.update[url]=
    layout.configuration.action.delete[url]=


Specify static portlets that cannot be moved and will always appear on every layout. Static portlets will take precedence over portlets that may have been dynamically configured for the layout.

For example, if you want the Hello World portlet to always appear at the start of the iteration of the first column for user layouts, set the property "layout.static.portlets.start.column-1[user]" to "47". If you want the Hello World portlet to always appear at the end of the second column for user layouts, set the property "layout.static.portlets.end.column-2[user]" to "47". You can input a list of comma delimited portlet IDs to specify more than one portlet. If the portlet is instanceable, add the suffix "_INSTANCE_abcd" to the portlet ID, where "abcd" is any random alphanumeric string.

The static portlets are fetched based on the properties controlled by custom filters using EasyConf. By default, the available filters are user, community, and organization.

Examples:

    layout.static.portlets.start.column-1[user]=6
    layout.static.portlets.end.column-1[user]=14
    layout.static.portlets.start.column-2[user]=71_INSTANCE_abcd,7
    layout.static.portlets.end.column-2[user]=34,70
    layout.static.portlets.start.column-3[user]=
    layout.static.portlets.end.column-3[user]=


It is also possible to set static portlets based on the layout's friendly URL.

Examples:

    layout.static.portlets.start.column-1[user][/home]=6
    layout.static.portlets.end.column-2[regular-site][/home]=14


Set the static portlets for the pages of regular sites.

Examples:

    layout.static.portlets.start.column-1[regular-site]=
    layout.static.portlets.end.column-1[regular-site]=
    layout.static.portlets.start.column-2[regular-site]=
    layout.static.portlets.end.column-2[regular-site]=
    layout.static.portlets.start.column-3[regular-site]=
    layout.static.portlets.end.column-3[regular-site]=


Set the static portlets for the pages of organization sites.

Examples:

    layout.static.portlets.start.column-1[organization]=
    layout.static.portlets.end.column-1[organization]=
    layout.static.portlets.start.column-2[organization]=
    layout.static.portlets.end.column-2[organization]=
    layout.static.portlets.start.column-3[organization]=
    layout.static.portlets.end.column-3[organization]=


Set the static portlets that will appear for every layout. See layout_common taglib for the logic of when these portlets will be shown. For example, these portlets will only show for layouts that can contain portlets and are not in a pop up state.

Defaults:

    layout.static.portlets.all=


Set the private group, private user, and public servlet mapping for com.liferay.portal.servlet.FriendlyURLServlet. This value must match the servlet mapping set in web.xml.

For example, if the private group pages are mapped to "/group" and the group's friendly URL is set to "/guest" and the layout's friendly URL is set to "/company/community", then the friendly URL for the page will be http://www.liferay.com/group/guest/company/community. Private group pages map to a site's private pages and are only available to authenticated users with the proper permissions.

For example, if the public pages are mapped to "/web" and the group or user's friendly URL is set to "/guest" and the layout's friendly URL is set to "/company/community", then the friendly URL for the page will be http://www.liferay.com/web/guest/company/community. Public pages are available to unauthenticated users.

The friendly URL's for users, groups, and layouts can be set during runtime.

Defaults:

    layout.friendly.url.private.group.servlet.mapping=/group
    layout.friendly.url.private.user.servlet.mapping=/user
    layout.friendly.url.public.servlet.mapping=/web


Redirect to this resource if the user requested a friendly URL of a page that does not exist. Leave it blank to display nothing.

A similar configuration for sites is managed with the property "sites.friendly.url.page.not.found".

Note: For backward compatibility, this overrides the property "layout.show.http.status" for the 404 status code.

Examples:

    layout.friendly.url.page.not.found=/html/portal/404.html


Set the reserved keywords that cannot be used in a friendly URL.

Defaults:

    layout.friendly.url.keywords=\
        _vti_*,\
        api*,\
        c,\
        combo,\
        delegate,\
        display_chart*,\
        dtd,\
        elqNow,\
        facebook,\
        google_gadget,\
        group,\
        html,\
        image,\
        language,\
        lucene,\
        netvibes,\
        o,\
        osgi,\
        page,\
        pbhs,\
        poller,\
        private,\
        public,\
        rest,\
        robots.txt,\
        sharepoint*,\
        sitemap.xml,\
        sprite,\
        tunnel-web,\
        user,\
        wap,\
        web,\
        webdav*,\
        widget,\
        xmlrpc


Set this to true if guest users should see the maximize window icon.

Defaults:

    layout.guest.show.max.icon=false


Set this to true if guest users should see the minimize window icon.

Defaults:

    layout.guest.show.min.icon=false


Set this to true if users are shown that they do not have access to a portlet. The portlet init parameter "show-portlet-access-denied" will override this setting.

Defaults:

    layout.show.portlet.access.denied=true


Set this to true if users are shown that a portlet is inactive. The portlet init parameter "show-portlet-inactive" will override this setting.

Defaults:

    layout.show.portlet.inactive=true


Set this to true if the portal should show HTTP status codes like 404 if the requested page is not found.

Defaults:

    layout.show.http.status=true


Set the default layout template ID used when creating layouts.

Defaults:

    layout.default.template.id=2_columns_ii


Set this to false to disable ajax rendering. You can also disable it on a per request basis by setting the attribute key com.liferay.portal.util.WebKeys.PORTLET_AJAXABLE_RENDER to the Boolean.FALSE in a pre service event or by setting the URL parameter "p_p_ajax" to "0". See the property "session.disabled" on how that property effects this property.

Defaults:

    layout.ajax.render.enable=true


Set this to false to disable server side parallel rendering. You can also disable it on a per request basis by setting the attribute key com.liferay.portal.util.WebKeys.PORTLET_PARALLEL_RENDER to the Boolean.FALSE in a pre service event or by setting the URL parameter "p_p_parallel" to "0".

Set this to true to forcibly set the property "portlet.container.restrict" to true, as server side parallel rendering requires restricted request attributes.

This feature is only available for Tomcat and will be ignored when the portal is running in other environments.

This property is deprecated and only provided for documentation purposes.

Examples:

    layout.parallel.render.enable=false


Set the number of core threads used for server side parallel rendering.

Defaults:

    layout.parallel.render.thread.pool.core.thread.count=1


Set the time in seconds to keep a thread alive for server side parallel rendering.

Defaults:

    layout.parallel.render.thread.pool.keep.alive.time=600


Set the maximum size of the task queue for server side parallel rendering. An unbounded queue size will never trigger RejectedExecutionHandler. Under heavy load, this will lead to massive memory usage. A bounded queue size with a proper RejectedExecutionHandler can help the server perform graceful degradation.

Defaults:

    layout.parallel.render.thread.pool.max.queue.size=100


Set the maximum number of threads used for server side parallel rendering.

Defaults:

    layout.parallel.render.thread.pool.max.thread.count=20


Set the timeout time for server side parallel rendering. On timeout, all pending portlets will fail back to ajax loading or trigger an error message depending on whether the portlets are ajaxable.

This timeout is an int value rather than long to avoid some atomic set race condition. The Integer.MAX_VALUE is more than enough for a reasonable timeout.

Defaults:

    layout.parallel.render.timeout=5000


Set the name of a class that implements com.liferay.portal.util.LayoutClone. This class is used to remember maximized and minimized states on shared pages. The default implementation persists the state in the browser session.

Defaults:

    layout.clone.impl=com.liferay.portal.util.SessionLayoutClone


Set this to true to cache the content of layout templates. This is recommended because it improves performance for production servers. Setting it to false is useful during development if you need to make a lot of changes.

Defaults:

    layout.template.cache.enabled=true


Set the default value for the "p_l_reset" parameter. If set to true, render parameters are cleared when different pages are hit. This is not the behavior promoted by the portlet specification, but is the one that most end users seem to prefer.

Defaults:

    layout.default.p_l_reset=true


Set this to true to enable comments for pages.

Defaults:

    layout.comments.enabled=true


Set this to true to remember maximized window states across different pages.

Defaults:

    layout.remember.maximized.window.state=false


Set the initial number of child pages to display in the Manage Pages tree. Set this to -1 to show all.

Defaults:

    layout.manage.pages.initial.children=20


Set this to true to enable finding scoped layouts with a table join of the Layout and Group_ tables which is not cached. Set this to false to allow in memory joining. Conditional memory joining can be customized with the property "layout.scope.group.finder.threshold".

Defaults:

    layout.scope.group.finder.enabled=true


Set the threshold for when to use in memory joining. In memory joining will be used when the number of scoped layouts is less than the threshold. Setting the value to negative will ensure in memory joining is always used. This property is ignored if "layout.scope.group.finder.enabled" is set to false.

Defaults:

    layout.scope.group.finder.threshold=100


Top of Page

Layout Prototypes


Set this to true to enable the propagation of changes to a page from its page template by default.

Defaults:

    layout.prototype.link.enabled.default=true


In the case that a page template would fail to merge, make sure that we prevent repeated attempts that will inevitably fail by setting a fail threshold.

Defaults:

    layout.prototype.merge.fail.threshold=3


Set the number of seconds we should expect a lock to last before we recognize that an error occurred and some other process should be able to attempt to take it over.

Defaults:

    layout.prototype.merge.lock.max.time=300


Top of Page

Layout Set Prototypes


In the case that a site template would fail to merge, make sure that we prevent repeated attempts that will inevitably fail by setting a fail threshold.

Defaults:

    layout.set.prototype.merge.fail.threshold=3


Set the number of seconds we should expect a lock to last before we recognize that an error occurred and some other process should be able to attempt to take it over.

Defaults:

    layout.set.prototype.merge.lock.max.time=600


Set this to true to propagate a site template's logo to a site when the propagation of changes is enabled. Set this to false to propagate a site template's logo only when a site is first created from its site template. Further changes to a site template's logo is not propagated even if the propagation of changes is enabled.

Defaults:

    layout.set.prototype.propagate.logo=false


Top of Page

Portlet URL


Set this to true if calling setParameter on a portlet URL appends the parameter value versus replacing it. There is some disagreement in the interpretation of the JSR 168 spec among portlet developers over this specific behavior. Liferay Portal successfully passes the portlet TCK tests whether this value is set to true or false.

See https://issues.liferay.com/browse/LEP-426 for more information.

Defaults:

    portlet.url.append.parameters=false


Set this to true to allow portlet URLs to generate with an anchor tag.

Defaults:

    portlet.url.anchor.enable=false


JSR 286 specifies that portlet URLs are escaped by default. Set this to false to provide for better backwards compatibility.

If this is set to true, but a specific portlet application requires that its portlet URLs not be escaped by default, then modify portlet.xml and set the container runtime option "javax.portlet.escapeXml" to false.

Defaults:

    portlet.url.escape.xml=false


Set a list of comma delimited reserved parameters that will not be added to refresh URL.

Defaults:

    portlet.url.refresh.url.reserved.parameters=password,password1,password2,pop3Password,properties--jdbc.default.password,settings--google.apps.password,smtpPassword,settings--ldap.security.credentials


Set this to true to allow portlet URLs to be generated using /c/portal/portlet_url. Enabling can pose a security risk.

Defaults:

    portlet.url.generate.by.path.enabled=false


Top of Page

Preferences


Set this to true to validate portlet preferences on startup.

Defaults:

    preference.validate.on.startup=false


Top of Page

Redirect


Set this property to "ip" or "domain" for the redirect security method. If set to "domain", the portal will only redirect users to domains listed in the property "redirect.url.domain.allowed". If set to "ip", the portal will only redirect to domains whose IP address resolve to an IP address listed in the property "redirect.url.ip.allowed".

Defaults:

    redirect.url.security.mode=ip

Examples:

    redirect.url.security.mode=domain


Input a list of comma delimited domains which the portal is allowed to redirect to. Input a blank list to allow any domain. Specifying a domain with a leading "*." allows redirects to subdomains.

Defaults:

    redirect.url.domains.allowed=


Input a list of comma delimited IPs which the portal is allowed to redirect to. Input a blank list to allow any IP. SERVER_IP will be replaced with the IP of the host server.

Defaults:

    redirect.url.ips.allowed=127.0.0.1,SERVER_IP


Top of Page

Struts


Specify the parameter names that will be ignored and not available to portlets that use Struts. See LPS-46552 for more information.

Defaults:

    struts.portlet.ignored.parameters.regexp=(.*\\.|^|.*|\\[('|"))(c|C)lass(\\.|('|")]|\\[).*


Input the custom Struts request processor that will be used by Struts based portlets. The custom class must extend com.liferay.portal.struts.PortletRequestProcessor and have the same constructor.

Defaults:

    struts.portlet.request.processor=com.liferay.portal.struts.PortletRequestProcessor


Top of Page

Images


Set this to true if the Image servlet will automatically scale an image based on the request "height" and "width" parameters.

Defaults:

    image.auto.scale=false


Set the location of the default spacer image that is used for missing images. This image must be available in the class path.

Defaults:

    image.default.spacer=com/liferay/portal/dependencies/spacer.gif


Set the location of the default company logo image that is used for missing company logo images. This image must be available in the class path.

Defaults:

    image.default.company.logo=com/liferay/portal/dependencies/company_logo.png


Set the location of the default organization logo image that is used for missing organization logo images. This image must be available in the class path.

Defaults:

    image.default.organization.logo=com/liferay/portal/dependencies/organization_logo.png


Set the locations of the default user portrait images that are used for missing user portrait images. This image must be available in the class path.

Defaults:

    image.default.user.female.portrait=com/liferay/portal/dependencies/user_female_portrait.png
    image.default.user.male.portrait=com/liferay/portal/dependencies/user_male_portrait.png


In versions prior to 6.1, the Image Gallery portlet supported persisting images via com.liferay.portal.image.DatabaseHook, com.liferay.portal.image.DLHook, or com.liferay.portal.image.FileSystemHook. Since 6.1, only DLHook is supported.

Set this property to the hook implementation to trigger automatic data migration during an upgrade.

Examples:

    image.hook.impl=com.liferay.portal.image.DatabaseHook
    image.hook.impl=com.liferay.portal.image.DLHook
    image.hook.impl=com.liferay.portal.image.FileSystemHook


This is a legacy property used by the FileSystemHook to allow data migration from other hooks.

Defaults:

    image.hook.file.system.root.dir=${liferay.home}/data/images


ImageIO's stream cache may reside in memory or on the file system. Setting this to false tells ImageIO to use memory for caching. Memory caches offer better performance since nothing is written to the file system. However, memory is usually more limited and more expensive.

Defaults:

    image.io.use.disk.cache=true


Set the maximum image height and width in pixels that can be read by the image tool. A value of 0 indicates no restrictions. See LPS-63358 for more information.

Defaults:

    image.tool.image.max.height=10000
    image.tool.image.max.width=10000


Top of Page

Editors


You can configure individual JSP pages to use a specific implementation of the available WYSIWYG editors: alloyeditor, alloyeditor_bbcode, alloyeditor_creole, ckeditor, ckeditor_bbcode, ckeditor_creole, simple, tinymce, or tinymce_simple.

Defaults:

    editor.wysiwyg.default=ckeditor
    editor.wysiwyg.portal-impl.portlet.ddm.text_html.ftl=alloyeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.announcements.edit_entry.jsp=alloyeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.blogs.edit_entry.jsp=alloyeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.mail.edit.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.mail.edit_message.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.message_boards.edit_message.bb_code.jsp=alloyeditor_bbcode
    editor.wysiwyg.portal-web.docroot.html.portlet.message_boards.edit_message.html.jsp=alloyeditor
    editor.wysiwyg.portal-web.docroot.html.taglib.ui.discussion.jsp=alloyeditor
    editor.wysiwyg.portal-web.docroot.html.taglib.ui.email_notification_settings.jsp=ckeditor


Top of Page

Fields


Set the following fields to false so users cannot see them. Some company policies require gender and birthday information to always be hidden.

Defaults:

    field.enable.com.liferay.portal.kernel.model.Contact.male=true
    field.enable.com.liferay.portal.kernel.model.Contact.birthday=true
    field.enable.com.liferay.portal.kernel.model.Organization.status=false


Input a list of comma delimited user types. Users that match one of these user types have permission to edit all of their own fields. Valid user types are "user-with-mx" and "user-without-mx". A value of "user-with-mx" is a user who has an email address that matches the company mail suffix, and "user-without-mx" is a user who does not have an email address that matches the company mail suffix.

Defaults:

    field.editable.user.types=user-with-mx,user-without-mx


Input a list of comma delimited role names. Users associated with one of these roles have permission to edit all of their own fields.

Defaults:

    field.editable.roles=administrator


Input a list of comma delimited domain names. Users with an email address that match one of these domain names have permission to edit all of their own fields.

Examples:

    field.editable.domains=


Input a list of comma delimited domain names. Users with an email address that match one of these domain names have permission to edit the specified field. Input "*" to allow all users to modify the specified field.

Examples:

    field.editable.domains[birthday]=
    field.editable.domains[emailAddress]=
    field.editable.domains[firstName]=
    field.editable.domains[gender]=
    field.editable.domains[jobTitle]=
    field.editable.domains[lastName]=
    field.editable.domains[middleName]=
    field.editable.domains[portrait]=
    field.editable.domains[prefix]=
    field.editable.domains[screenName]=
    field.editable.domains[suffix]=


Top of Page

Mime Types


Input a list of comma delimited extensions for which the content disposition header has to be set to "inline". Note that including "swf" in the list may expose you to a CSRF attack.

Defaults:

    mime.types.content.disposition.inline=flv,gif,jpg,pdf,png,wmv


Input a list of comma delimited MIME types that are optimized for displaying images on the Internet. One of the use cases for this property is to limit the image file types that a user can upload as a company logo, organization logo, or user portrait.

Defaults:

    mime.types.web.images=image/gif,image/jpeg,image/pjpeg,image/png,image/x-png


Top of Page

Browser Cache


Set this to true if you want the portal to force the browser cache to be disabled. It will only disable the cache for the rendered HTML response. It will not have an impact on static content or other resources.

Defaults:

    browser.cache.disabled=true


Set this true if you want to disable the cache for authenticated users. This property is not read when the property "browser.cache.signed.in.disabled" is true. This is useful to ensure that authenticated users cannot go to the sign in page by clicking on the back button in their browsers.

Defaults:

    browser.cache.signed.in.disabled=true


Top of Page

Browser Compatibility


Enter which versions of IE your browser should emulate to render the portal. Enter "edge" to always use IE's latest standards rendering mode.

Defaults:

    browser.compatibility.ie.versions=IE=edge


Top of Page

Browser Launcher


Enter a URL to automatically launch a browser to that URL when the portal has fully initialized. Enter a blank URL to disable this feature.

Defaults:

    browser.launcher.url=http://localhost:8080


Top of Page

Control Panel


Set the name of the layout.

Defaults:

    control.panel.layout.name=Control Panel


Set the friendly URL of the layout.

Defaults:

    control.panel.layout.friendly.url=/manage


Set the theme of the layout.

Defaults:

    control.panel.layout.regular.theme.id=admin_WAR_admintheme


Set the maximum number of sites that will be shown in the navigation menus. A large value might cause performance problems if the number of sites a user can administer is very large.

Defaults:

    control.panel.navigation.max.sites=100


Set the name of a class that implements com.liferay.portal.kernel.portlet.ControlPanelEntry. This class denotes the default value of of the element "control-panel-entry-class" in liferay-portlet.xml and is called by the Control Panel to decide whether the portlet should be shown to a specific user in a specific context.

This property is not read by the portal except for portal properties overridden by liferay-hook.xml. It remains here only as a reference.

Examples:

    control.panel.default.entry.class=com.liferay.portal.kernel.portlet.DefaultControlPanelEntry


Top of Page

Lucene Search


Set this to true to enable spell checking the query.

Defaults:

    index.search.collated.spell.check.result.enabled=true


Set the limit for considering the returned results as valid. When this threshold is not met, the most relevant spell checked query will be displayed.

Defaults:

    index.search.collated.spell.check.result.scores.threshold=50


Set the fragment size returned from the search result highlighter.

Defaults:

    index.search.highlight.fragment.size=80


Set this to true to require field match when highlighting.

Defaults:

    index.search.highlight.require.field.match=true


Set the number of lines for the snippet returned by a search engine.

Defaults:

    index.search.highlight.snippet.size=3


Set the limit for results used when performing index searches.

Defaults:

    index.search.limit=10000


Set this to true to enable indexing of related queries based on successful searches. This does not affect indexing of related queries in the search portlet. To control indexing of related queries in the search portlet, configure the search portlet preferences.

Defaults:

    index.search.query.indexing.enabled=false


Set the limit for considering the returned results as valid. When this threshold is met, the query will be indexed as related query.

Defaults:

    index.search.query.indexing.threshold=50


Set the location of the query suggestion dictionary files for specific locales. Specify a comma delimited list of files if a locale has more than one dictionary file. A group ID (e.g. 123456) can also be added to specify a dictionary that only applies to one group.

Examples:

    index.search.query.suggestion.dictionary[en_US]=com/liferay/portal/search/dependencies/querysuggestions/en_US.txt
    index.search.query.suggestion.dictionary[es_ES]=com/liferay/portal/search/dependencies/querysuggestions/es_ES.txt
    index.search.query.suggestion.dictionary[en_US][123456]=com/liferay/portal/search/dependencies/querysuggestions/en_US_123456.txt


Set this to true to enable query suggestion if insufficient scoring or no results are returned for the user's original query. This does not affect suggestion in the search portlet. To control suggestion in the search portlet, configure the search portlet preferences.

Defaults:

    index.search.query.suggestion.enabled=false


Set the maximum number of query suggestions.

Defaults:

    index.search.query.suggestion.max=5


Set the limit of the search result score for triggering query suggestions. Setting this to 0 will ignore scoring thresholds and only suggest queries if no results are returned for the original search query.

Defaults:

    index.search.query.suggestion.scores.threshold=0


Set this to true to enable scoring of results.

Defaults:

    index.search.scoring.enabled=true


Set the location of the spell checker dictionary files for specific locales. Specify a comma delimited list of files if a locale has more than one dictionary file. A group ID (e.g. 123456) can also be added to specify a dictionary that only applies to one group.

Defaults:

    index.search.spell.checker.dictionary[en_US]=com/liferay/portal/search/dependencies/spellchecker/en_US.txt
    index.search.spell.checker.dictionary[es_ES]=com/liferay/portal/search/dependencies/spellchecker/es_ES.txt

Examples:

    index.search.spell.checker.dictionary[en_US][123456]=com/liferay/portal/search/dependencies/spellchecker/en_US_123456.txt


Specify the locales supported by the spell checker. This is used by the search engine's spell checker when determining whether to execute spell checking for a particular language.

Defaults:

    index.search.spell.checker.supported.locales=en_US,es_ES


Specify the maximum queue size of the index search writer. Set this to a negative value to allow the queue size to grow until the server runs out of memory.

Defaults:

    index.search.writer.max.queue.size=1000


Set the amplification factor for permission filtered searches, it must be a number that is larger than 1.

Defaults:

    index.permission.filter.search.amplification.factor=1.5


Set this to false to disable an indexer with given name by default, otherwise all indexers are enabled by default. This setting can be overridden in portal preferences by enabling or disabling the indexer in the control panel.

Examples:

    indexer.enabled[com.liferay.portal.kernel.model.User]=false


Set this to true if you want to index your entire library of files on startup. This property is available so that automated test environments index on startup. Do not set this to true on production systems or else your index will be indexed on every startup.

Defaults:

    index.on.startup=false


Set this to true to add a delay before indexing on startup. A delay may be necessary if a lot of plugins need to be loaded and reindexed. This property is only valid if "index.on.startup" is set to true.

Defaults:

    index.on.startup.delay=60


Set this to true if you want to index your entire library of files after an upgrade. Only set this property to false if you are running a small upgrade and you do not need to reindex everything.

Defaults:

    index.on.upgrade=true


Set this to true if you want the indexing on startup to be executed on a separate thread to speed up execution.

Defaults:

    index.with.thread=true


Set the date format used for storing dates as text in the index.

Defaults:

    index.date.format.pattern=yyyyMMddHHmmss


Set this to true if you want to compress index files before they are dumped.

Defaults:

    index.dump.compression.enabled=true


Enter a list of comma delimited field names that will be copied to an untokenized field for sorting.

Defaults:

    index.sortable.text.fields=firstName,jobTitle,lastName,name,screenName,title


Set the maximum length for sortable keyword fields before they are truncated.

Defaults:

    index.sortable.text.fields.truncated.length=255


Set the maximum number of clauses to allow in a boolean query. The default is 1024.

Examples:

    lucene.boolean.query.clause.max.size=1024


Top of Page

Multi Value Map


Set the multi value map property to 0 to store the map in memory and 1 to store the map in the file system.

Defaults:

    multi.value.map.com.liferay.portal.convert.ConvertPermissionAlgorithm.convertResourcePermission=0
    multi.value.map.com.liferay.portal.convert.ConvertPermissionAlgorithm.convertRoles=0


Top of Page

Setup Wizard

Defaults:

    setup.database.driverClassName[db2]=com.ibm.db2.jcc.DB2Driver
    setup.database.driverClassName[hypersonic]=org.hsqldb.jdbc.JDBCDriver
    setup.database.driverClassName[mariadb]=org.mariadb.jdbc.Driver
    setup.database.driverClassName[mysql]=com.mysql.jdbc.Driver
    setup.database.driverClassName[oracle]=oracle.jdbc.OracleDriver
    setup.database.driverClassName[postgresql]=org.postgresql.Driver
    setup.database.driverClassName[sqlserver]=com.microsoft.sqlserver.jdbc.SQLServerDriver
    setup.database.driverClassName[sybase]=com.sybase.jdbc4.jdbc.SybDriver

Defaults:

    setup.database.jar.name[com.mysql.jdbc.Driver]=mysql.jar
    setup.database.jar.url[com.mysql.jdbc.Driver]=http://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.23/mysql-connector-java-5.1.23.jar

Defaults:

    setup.database.url[db2]=jdbc:db2://localhost:50000/lportal:deferPrepares=false;fullyMaterializeInputStreams=true;fullyMaterializeLobData=true;progresssiveLocators=2;progressiveStreaming=2;
    setup.database.url[hypersonic]=jdbc:hsqldb:${liferay.home}/data/hypersonic/lportal
    setup.database.url[mariadb]=jdbc:mariadb://localhost/lportal?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false
    setup.database.url[mysql]=jdbc:mysql://localhost/lportal?characterEncoding=UTF-8&dontTrackOpenResources=true&holdResultsOpenOverStatementClose=true&useFastDateParsing=false&useUnicode=true
    setup.database.url[oracle]=jdbc:oracle:thin:@localhost:1521:xe
    setup.database.url[postgresql]=jdbc:postgresql://localhost:5432/lportal
    setup.database.url[sqlserver]=jdbc:sqlserver://localhost;databaseName=lportal
    setup.database.url[sybase]=jdbc:sybase:Tds:localhost:5000/lportal


Set this property to true if the Setup Wizard should be displayed the first time the portal is started.

Defaults:

    setup.wizard.enabled=true


Top of Page

SourceForge

Defaults:

    source.forge.mirrors=\
        http://downloads.sourceforge.net,\      # Redirect
        http://internap.dl.sourceforge.net,\    # San Jose, CA
        http://superb-east.dl.sourceforge.net,\ # McLean, Virginia
        http://superb-west.dl.sourceforge.net,\ # Seattle, Washington
        http://easynews.dl.sourceforge.net,\    # Phoenix, AZ
        http://kent.dl.sourceforge.net,\        # Kent, UK
        http://ufpr.dl.sourceforge.net,\        # Curitiba, Brazil
        http://belnet.dl.sourceforge.net,\      # Brussels, Belgium
        http://switch.dl.sourceforge.net,\      # Lausanne, Switzerland
        http://mesh.dl.sourceforge.net,\        # Duesseldorf, Germany
        http://ovh.dl.sourceforge.net,\         # Paris, France
        http://dfn.dl.sourceforge.net,\         # Berlin, Germany
        http://heanet.dl.sourceforge.net,\      # Dublin, Ireland
        http://garr.dl.sourceforge.net,\        # Bologna, Italy
        http://surfnet.dl.sourceforge.net       # Amsterdam, The Netherlands
        http://jaist.dl.sourceforge.net,\       # Ishikawa, Japan
        http://nchc.dl.sourceforge.net,\        # Tainan, Taiwan
        http://optusnet.dl.sourceforge.net      # Sydney, Australia


Top of Page

Value Object


You can add a listener for a specific class by setting the property "value.object.listener" with a list of comma delimited class names that implement com.liferay.portal.kernel.model.ModelListener. These classes are pooled and reused and must be thread safe.

This property is not read by the portal except for portal properties overridden by liferay-hook.xml. It remains here only as a reference.

Examples:

    value.object.listener.com.liferay.portal.kernel.model.Contact=com.liferay.portal.model.ContactModelListener
    value.object.listener.com.liferay.portal.kernel.model.Layout=com.liferay.portal.model.LayoutModelListener,com.liferay.portal.service.impl.LayoutSetPrototypeLayoutModelListener
    value.object.listener.com.liferay.portal.kernel.model.LayoutSet=com.liferay.portal.model.LayoutSetModelListener,com.liferay.portal.service.impl.LayoutSetPrototypeLayoutSetModelListener
    value.object.listener.com.liferay.portal.kernel.model.PortletPreferences=com.liferay.portal.model.PortletPreferencesModelListener
    value.object.listener.com.liferay.portal.kernel.model.User=com.liferay.portal.model.UserModelListener
    value.object.listener.com.liferay.portal.kernel.model.UserGroup=com.liferay.portal.model.UserGroupModelListener


Value objects are cached at three levels. They first level is "entity", the second level is "finder", and the third level is "Hibernate".

The entity level cache stores a value object's primary key to the value object itself.

The finder level cache stores the many paths that return a value object and the many paths that return a list of value objects. The finder level cache only caches primary keys and is further helped by the entity level cache that caches the value object to the primary key.

The Hibernate level cache is provided by the "hibernate.cache.provider_class" property.


Set this to true to enable entity level caching.

Defaults:

    value.object.entity.cache.enabled=true


Set this to true to configure entity level caching to block. See the property "ehcache.blocking.cache.allowed" for more information.

Defaults:

    value.object.entity.blocking.cache=true


The entity level cache uses a thread local map to store the most frequently accessed items to lower the number of queries to the underlying cache. Set the maximum map size to 0 to disable the thread level cache.

Defaults:

    value.object.entity.thread.local.cache.max.size=100


Entity level caching for a specific type of value object can be configured by using a property name that includes the value object's class name.

Defaults:

    value.object.entity.cache.enabled.com.liferay.portal.kernel.model.Layout=true
    value.object.entity.cache.enabled.com.liferay.portal.kernel.model.User=true


Set this property to true to enable MVCC entity level caching. This feature only applies to entities with that are MVCC enabled. See the attribute "mvcc-enabled" in the Service Builder DTD.

Defaults:

    value.object.mvcc.entity.cache.enabled=true


Set this to true to enable finder level caching.

Defaults:

    value.object.finder.cache.enabled=true


Set this to configure the list threshold for the maximum number of objects to cache with the same finder path and arguments. Setting this to 0 disables finder level caching. Setting this to -1 disables the threshold.

Defaults:

    value.object.finder.cache.list.threshold=10000


The finder level cache uses a thread local map to store the most frequently accessed items to lower the number of queries to the underlying cache. Set the maximum map size to 0 to disable the thread level cache.

Defaults:

    value.object.finder.thread.local.cache.max.size=100


Finder level caching for a specific type of value object can be configured by using a property name that includes the value object's class name. Mapping tables can also be specified to configure the caching of value object relationships.

Defaults:

    value.object.finder.cache.enabled.com.liferay.portal.kernel.model.Layout=true
    value.object.finder.cache.enabled.com.liferay.portal.kernel.model.User=true
    value.object.finder.cache.enabled.Users_Roles=true


Top of Page

Table Mapper


Set a list of comma delimited mapping table names that will not be using cache in their table mappers.

Defaults:

    table.mapper.cacheless.mapping.table.names=\
        Users_Groups,\
        Users_Orgs,\
        Users_Roles,\
        Users_Teams,\
        Users_UserGroups


Top of Page

Audit Message

Defaults:

    audit.message.com.liferay.portal.kernel.model.Layout.VIEW=false


Top of Page

Buffered Increment


Buffered incrementing provides logic to batch together requests for writing view count increments to the database. Minimizing these database hits can improve overall performance.

Buffered incrementing only applies to service methods annotated with the @BufferedIncrement(...) annotation. By default, it is used with methods that increment view counters for Message Boards threads, Document Library file entries, and Asset entries.

Disabling buffered increment logic will result in the service methods annotated with the @BufferedIncrement annotation being skipped. Only do this if you want to completely disable the view counters.

If you want to keep the view counters enabled but avoid using the buffered increment logic, one option is to remove the BufferedIncrementAdvice bean from base-spring.xml. As an alternative to disabling the buffered increment logic, consider disabling its standby logic by setting the "buffered.increment.standby.queue.threshold" and "buffered.increment.standby.time.upper.limit" properties to 0.

Defaults:

    buffered.increment.enabled=true


The standby properties manage the time the dispatcher waits to process an increment requests. The longer the dispatcher waits to process a request, the greater the probability that incoming requests, involving the same entity instances (entries), can be batched together.

For example, if the same Message Boards thread (MBThread instance) is viewed multiple times (n times) while an existing view increment request for that MBThread is waiting to be dispatched, then the incoming increments can be added to the increment value of the existing request. The resulting view count increment for the existing entry then would be modified to 1 + n times and the incoming requests would be discarded. This minimizes the database hits for incrementing that entry. Since the incoming requests were no longer needed, and hence discarded, the memory required for incrementing the view count of the entry was minimized too.

Worker threads submit new increment requests to a BatchablePipe and notify the dispatcher thread pool of the requests. The pipe acts as a mailbox holding increment requests in a queue for the dispatcher to process. On receiving a new increment request, the pipe checks if it already has a request for the same entry. If it does, the pipe adds the incoming increment to the existing entry's increment value and discards the incoming increment request. If it doesn't find an existing request for the same entry, the incoming request is simply added to the tail of the queue.

On being notified by the worker thread of increment requests submitted to the BatchablePipe, the thread pool checks the status of its dispatch threads. If no dispatch threads exist, it creates one. If an idle thread exists, it wakes it up. If threads exist but they are all active, the thread pool leaves them alone. Active dispatch threads check the pipe's queue for requests to process.

The dispatch threads apply the standby logic before processing each request from the pipe. They calculate the standby time for the request at the head of the pipe's queue based on the queue threshold. If the number of requests in the queue exceeds the threshold, the dispatch thread processes the head request as quickly as possible, without waiting. If the number of requests is within the threshold, the dispatch thread calculates the standby time for the head request to be the standby time upper limit (in seconds) divided by the number of requests in the queue. The fewer requests in the queue, the longer the head request waits on standby.

Consider the tradeoff between overall performance and delay in view count updates as you configure standby waiting. The standby times applied to the requests have a linear inverse ratio relationship to the number of requests in the pipe. The standby time is not constant. The fewer requests inside the queue, the longer they wait in standby. This logic increases the probability of maximizing the batching of requests for dispatch. The following chart illustrates the relationship:

     ^ standby time
     |
     |\<---buffered.increment.standby.time.upper.limit
     | \
     |  \
     |   \
     |    \
     --------------> current BatchablePipe size
     0 ^
       |
       buffered.increment.standby.queue.threshold

Typical settings for the queue threshold and upper time limit of a heavy loaded system could be 10000 requests and 60 seconds, respectively.

If either the queue threshold or upper time limit are set to 0, requests are processed from the queue as quickly as possible, without waiting. Negative values for either property are treated as 0.

Defaults:

    buffered.increment.standby.queue.threshold=0
    buffered.increment.standby.time.upper.limit=0


The dispatcher thread pool manages the lifecycle of the dispatch threads. By default, the thread pool is configured to use a single dispatch thread. Buffered incrementing is designed for optimal performance using a single dispatch thread.

Set the "buffered.increment.threadpool.keep.alive.time" property to the maximum idle time before a dispatch thread can be recycled. Negative values for this property are treated as 0.

The "buffered.increment.threadpool.max.size" property value should, in in most cases, remain set to 1. If for some reason, more than one dispatch thread is desired, know that this goes against the design of buffered incrementing and may result in less than optimal performance. Values less than or equal to 0 for this property are treated as 1.

Defaults:

    buffered.increment.threadpool.keep.alive.time=60
    buffered.increment.threadpool.max.size=1


Override the global buffered increment settings with specific settings for the AssetEntry view counter.

Examples:

    buffered.increment.enabled[AssetEntry]=true
    buffered.increment.standby.queue.threshold[AssetEntry]=0
    buffered.increment.standby.time.upper.limit[AssetEntry]=0
    buffered.increment.threadpool.keep.alive.time[AssetEntry]=60
    buffered.increment.threadpool.max.size[AssetEntry]=1


Override the global buffered increment settings with specific settings for the DLFileEntry view counter.

Examples:

    buffered.increment.enabled[DLFileEntry]=true
    buffered.increment.standby.queue.threshold[DLFileEntry]=0
    buffered.increment.standby.time.upper.limit[DLFileEntry]=0
    buffered.increment.threadpool.keep.alive.time[DLFileEntry]=60
    buffered.increment.threadpool.max.size[DLFileEntry]=1


Override the global buffered increment settings with specific settings for the DLFolderEntry last post date.

Examples:

    buffered.increment.enabled[DLFolderEntry]=true
    buffered.increment.standby.queue.threshold[DLFolderEntry]=0
    buffered.increment.standby.time.upper.limit[DLFolderEntry]=0
    buffered.increment.threadpool.keep.alive.time[DLFolderEntry]=60
    buffered.increment.threadpool.max.size[DLFolderEntry]=1


Override the global buffered increment settings with specific settings for the MBThread view counter.

Examples:

    buffered.increment.enabled[MBThread]=true
    buffered.increment.standby.queue.threshold[MBThread]=0
    buffered.increment.standby.time.upper.limit[MBThread]=0
    buffered.increment.threadpool.keep.alive.time[MBThread]=60
    buffered.increment.threadpool.max.size[MBThread]=1


Top of Page

Cache


Clear cache on context initialization.

Defaults:

    cache.clear.on.context.initialization=true


Clear cache when plugins are undeployed.

Defaults:

    cache.clear.on.plugin.undeploy=true


The cache filter caches processed web content. Set the threshold size to prevent caching resources that are too large. The default value is 500 kb.

Defaults:

    cache.content.threshold.size=512000


Set this to false to disable user agent matching in the cache filter. Excluding the user agent improves the cache hit ratio but should not be used when content is browser specific. Each cache filter can be individually configured with the "includeUserAgent" init parameter.

Defaults:

    cache.filter.include.user.agent=true


Top of Page

Cluster Link


Set the cluster node bootup response timeout in milliseconds.

Defaults:

    cluster.link.node.bootup.response.timeout=10000


Set this to true to enable the cluster link. This is required if you want to cluster indexing and other features that depend on the cluster link.

Defaults:

    cluster.link.enabled=false


Set the logic name for each JGroups channel. The logic name must be unique for each node in the cluster. If it is not set, a random logic name will be generated. We support up to 10 transport channels and 1 single required control channel.

Defaults:

    cluster.link.channel.logic.name.control=
    cluster.link.channel.logic.name.transport.0=

Examples:

    cluster.link.channel.logic.name.transport.1=


Set the name for each JGroups channel. We support up to 10 transport channels and 1 single required control channel.

Defaults:

    cluster.link.channel.name.control=liferay-channel-control
    cluster.link.channel.name.transport.0=liferay-channel-transport-0

Examples:

    cluster.link.channel.name.transport.1=liferay-channel-transport-1


Set the JGroups properties for each channel, we support up to 10 transport channels and 1 single required control channel. Use as few transport channels as possible for best performance. By default, only one UDP control channel and one UDP transport channel are enabled. Channels can be configured by XML files that are located in the class path or by inline properties.

Defaults:

    cluster.link.channel.properties.control=UDP(bind_addr=${cluster.link.bind.addr["cluster-link-control"]};mcast_group_addr=${multicast.group.address["cluster-link-control"]};mcast_port=${multicast.group.port["cluster-link-control"]}):PING:MERGE3(min_interval=10000;max_interval=30000):FD_SOCK:FD_ALL:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK2(xmit_interval=500;xmit_table_num_rows=100;xmit_table_msgs_per_row=2000;xmit_table_max_compaction_time=30000;max_msg_batch_size=500;use_mcast_xmit=false;discard_delivered_msgs=true):UNICAST3(xmit_interval=500;xmit_table_num_rows=100;xmit_table_msgs_per_row=2000;xmit_table_max_compaction_time=60000;conn_expiry_timeout=0;max_msg_batch_size=500):pbcast.STABLE(stability_delay=1000;desired_avg_gossip=50000;max_bytes=4M):pbcast.GMS(join_timeout=2000;print_local_addr=true;view_bundling=true):UFC(max_credits=2M;min_threshold=0.4):MFC(max_credits=2M;min_threshold=0.4):FRAG2(frag_size=60K):RSVP(resend_interval=2000;timeout=10000)
    cluster.link.channel.properties.transport.0=UDP(bind_addr=${cluster.link.bind.addr["cluster-link-udp"]};mcast_group_addr=${multicast.group.address["cluster-link-udp"]};mcast_port=${multicast.group.port["cluster-link-udp"]}):PING:MERGE3(min_interval=10000;max_interval=30000):FD_SOCK:FD_ALL:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK2(xmit_interval=500;xmit_table_num_rows=100;xmit_table_msgs_per_row=2000;xmit_table_max_compaction_time=30000;max_msg_batch_size=500;use_mcast_xmit=false;discard_delivered_msgs=true):UNICAST3(xmit_interval=500;xmit_table_num_rows=100;xmit_table_msgs_per_row=2000;xmit_table_max_compaction_time=60000;conn_expiry_timeout=0;max_msg_batch_size=500):pbcast.STABLE(stability_delay=1000;desired_avg_gossip=50000;max_bytes=4M):pbcast.GMS(join_timeout=2000;print_local_addr=true;view_bundling=true):UFC(max_credits=2M;min_threshold=0.4):MFC(max_credits=2M;min_threshold=0.4):FRAG2(frag_size=60K):RSVP(resend_interval=2000;timeout=10000)

Examples:

    cluster.link.channel.properties.transport.1=udp.xml
    cluster.link.channel.properties.transport.2=mping.xml


Set JGroups' system properties. System properties are only used when individual properties are not set.

Defaults:

    cluster.link.channel.system.properties=
        #
        # Common
        #
        #\
        #jgroups.bind_addr:${cluster.link.bind.addr["cluster-link-udp"]},\
        #jgroups.bind_interface:eth0,\
        #\
        #
        # Multicast
        #
        #\
        #jgroups.mping.mcast_addr:${multicast.group.address["cluster-link-mping"]},\
        #jgroups.mping.mcast_port:${multicast.group.port["cluster-link-mping"]},\
        #jgroups.mping.ip_ttl:8


Set this property to autodetect the default outgoing IP address so that JGroups can bind to it. The property must point to an address that is accessible to the portal server, www.google.com, or your local gateway.

Defaults:

    cluster.link.autodetect.address=www.google.com:80


Set the bind address for JGroups directly, it only works when the property "cluster.link.autodetect.address" is not set. See the property "cluster.link.channel.properties.control" for more information.

Defaults:

    cluster.link.bind.addr["cluster-link-control"]=localhost


Set bind address for jgroups directly, it only works when "cluster.link. autodetect.address" is not set. See the properties "cluster.link.channel. properties.transport.0" and "cluster.link.channel.system.properties".

Defaults:

    cluster.link.bind.addr["cluster-link-udp"]=localhost


Top of Page

Clusterable Advice


Set the clusterable advice call master timeout in seconds.

Defaults:

    clusterable.advice.call.master.timeout=10


Top of Page

Combo


A file extension of * will permit all file extensions.

Defaults:

    combo.allowed.file.extensions=.css,.js


The combo servlet combines multiple JavaScript files into a bundle based on shared dependencies. This makes loading JavaScript files much faster. Set this to false if the combination should refresh when one of its JavaScript files has changed. This property should be set to true during development for easier debugging but set to false during production for faster performance.

Defaults:

    combo.check.timestamp=false


Set the minimum wait interval in milliseconds between timestamp checks on resource files. This property is only used if the property "combo.check.timestamp" is set to true.

Defaults:

    combo.check.timestamp.interval=1000


Top of Page

Content Delivery Network


Set the hostname that will be used to serve static content via a CDN for requests made over the HTTP protocol. This property can be disabled dynamically at runtime by setting the URL parameter "cdn_enabled" to "0". The value must always include the full protocol.

Defaults:

    cdn.host.http=


Set the hostname that will be used to serve static content via a CDN for requests made over the HTTPS protocol. This property can be disabled dynamically at runtime by setting the URL parameter "cdn_enabled" to "0". The value must always include the full protocol.

Defaults:

    cdn.host.https=


Set this to true to enable serving dynamically generated CSS, JavaScript, and images via a CDN. Setting this to false allows the usage of CDNs that do not support lazy loading of resources (e.g. Amazon CloudFront).

Defaults:

    cdn.dynamic.resources.enabled=true


Top of Page

Counter


Specify the total number of deployment data centers. Each data center is independent of each other (e.g. not clustered together) and connected via a two way database replication.

Defaults:

    counter.data.center.count=1


Set the unique identifier for a data center deployment between 0 and the value in the property "counter.data.center.count" minus 1. This will ensure that each data center will generate unique counter values without fear of collision.

The data center algorithm will first shift the counter value to the right by the number of bits needed to represent the value in the property "counter.data.center.count" and then prepend the bits needed to represent the value in "counter.data.center.deployment.id" to the left most byte of the counter value.

Defaults:

    counter.data.center.deployment.id=0


The counter operates with its own data source to prevent deadlocks. By default, the data source created for the counter uses the same settings as those used to create the data source used for the rest of the portal. That happens because the counter service will look up the properties prefixed with "jdbc.default." to create its data source. See the JDBC properties prefixed with "jdbc.default." for more information.

Setting a different value for the counter JDBC prefix allows you to better fine tune the counter data source with its own set of configuration settings for high availability installations. Note that these settings, though separate, are a copy of the default settings with the newly overridden values.

Defaults:

    counter.jdbc.prefix=jdbc.default.


Set the number of increments between database updates to the Counter table. Set this value to a higher number for better performance.

Defaults:

    counter.increment=100


You can further fine tune the counter increment for specific counter names. This entry will ensure that the counter name "com.liferay.portal.kernel.model.Layout" or anything that starts with "com.liferay.portal.kernel.model.Layout#" will only increment by 1.

Defaults:

    counter.increment.com.liferay.portal.kernel.model.Layout=1


Top of Page

Direct Servlet Context


Set this to true to enable dispatching to a servlet directly to speed up request dispatching. This property only takes effect when a developer programmatically wraps a normal ServletContext with a DirectServletContext. See LPS-13776 for more information.

Defaults:

    direct.servlet.context.enabled=true


Set this to true to refresh the servlet associated with a JSP when the JSP has been modified. This property is not used unless the property "direct.servlet.context.enabled" is set to true.

Defaults:

    direct.servlet.context.reload=true


Top of Page

ETag


The ETag filter needs to process the response in order to calculate the ETag value. A large response may use too much memory. Set the maximum response size that will trigger an ETag calculation. The default maximum response size is 1 megabyte.

Defaults:

    etag.response.size.max=1048576


Top of Page

GZip


The GZip filter will compress files using the specified compression level. Set the value to -1 to use the default compression level. Set the value between 0 and 9 for other compression levels as documented in java.util.zip.Deflater.

Defaults:

    gzip.compression.level=-1


Top of Page

HTTP


See system.properties for more HTTP settings.


Set the maximum number of connections per host.

Examples:

    com.liferay.portal.util.HttpImpl.max.connections.per.host=2
    com.liferay.portal.util.HttpImpl.max.connections.per.host[rss.news.yahoo.com]=2


Set the maximum number of connections.

Examples:

    com.liferay.portal.util.HttpImpl.max.total.connections=20


Set the proxy authentication type.

Examples:

    com.liferay.portal.util.HttpImpl.proxy.auth.type=username-password
    com.liferay.portal.util.HttpImpl.proxy.auth.type=ntlm


Set user name and password used for HTTP proxy authentication.

Examples:

    com.liferay.portal.util.HttpImpl.proxy.username=
    com.liferay.portal.util.HttpImpl.proxy.password=


Set additional properties for NTLM authentication.

Examples:

    com.liferay.portal.util.HttpImpl.proxy.ntlm.domain=
    com.liferay.portal.util.HttpImpl.proxy.ntlm.host=


Set the connection timeout when fetching HTTP content.

Defaults:

    com.liferay.portal.util.HttpImpl.timeout=10000

Examples:

    com.liferay.portal.util.HttpImpl.timeout[rss.news.yahoo.com]=10000


Top of Page

HTTP Header Response


See system.properties for more HTTP Header Response settings.


Set the level of verbosity to use for the Liferay-Portal field in the HTTP header response. Valid values are "full", which gives all of the version information (e.g. Liferay Portal Community Edition 6.1.0 CE etc.), "partial", which gives only the name portion (e.g. Liferay Portal Community Edition), or the default release name (e.g. "Liferay Portal Community Edition" or "Liferay Portal Enterprise Edition"), which prevents the Portal from adding the Liferay-Portal field in the HTTP header response. The default release name must match the Portal edition being used.

Defaults:

    http.header.version.verbosity=full


Top of Page

HTTP Tunneling


Do not set this property to false in production environments. It overrides the SSL hostname verification and is used for self assigned certificates. See LPS-18038.

Defaults:

    com.liferay.portal.kernel.service.http.TunnelUtil.verify.ssl.hostname=true


Set this to the appropriate encryption algorithm that will be used for tunnel level encryption algorithms.

If you change this setting, you may need to also change the property "tunneling.servlet.shared.secret" to make sure that the shared secret length is a valid length for the encryption algorithm.

For more details about encryption keys, see the Java Cryptography Extension documentation.

Defaults:

    tunneling.servlet.encryption.algorithm=AES

Examples:

    tunneling.servlet.encryption.algorithm=Blowfish
    tunneling.servlet.encryption.algorithm=DESede


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 at least 8 bytes long. Please note that using a secret that is larger than 16 bytes requires that the Java Cryptography Extension Unlimited Strength Jurisdiction Policy Files are installed and that the property "tunneling.servlet.encryption.algorithm" supports that particular key size.

For more details about supported key sizes for encryption keys, see the Java Cryptography Extension documentation.

Examples:

    tunneling.servlet.shared.secret=


When set to true, tunneling.servlet.shared.secret must be encoded using a hexadecimal encoding.

Examples:

    tunneling.servlet.shared.secret.hex=true


Set a timeout to enforce a connection timeout for connections between servers via the tunneling servlet. Without setting this value, the actual timeout enforced may vary between environments.

Defaults:

    tunneling.servlet.timeout=30000


Top of Page

ImageMagick


Set this to true to enable ImageMagick. You must install Ghostscript and Imagemagick. See http://www.ghostscript.com and http://www.imagemagick.org for more information.

The search path should point to the directories for the ImageMagick and Ghostscript executables. You may also need to configure the path for fonts used by Ghostscript when in Apple or Unix environments.

Defaults:

    imagemagick.enabled=false
    imagemagick.global.search.path[apple]=/opt/local/bin:/opt/local/share/ghostscript/fonts:/opt/local/share/fonts/urw-fonts
    imagemagick.global.search.path[unix]=/usr/local/bin:/usr/local/share/ghostscript/fonts:/usr/local/share/fonts/urw-fonts
    imagemagick.global.search.path[windows]=C:\\Program Files\\gs\\bin;C:\\Program Files\\ImageMagick


Set these limits to configure the cache and resource usage of ImageMagick. To determine the current setting of these limits, run the command:

identify -list resource

See http://www.imagemagick.org/script/architecture.php for more information.

Defaults:

    imagemagick.resource.limit.area=2GiB
    imagemagick.resource.limit.map=1GiB
    imagemagick.resource.limit.memory=2GiB

Examples:

    imagemagick.resource.limit.disk=16GiB
    imagemagick.resource.limit.file=256
    imagemagick.resource.limit.thread=2
    imagemagick.resource.limit.time=3600


Top of Page

Intraband


Specify the class name of an Intraband implementation. The class must implement the com.liferay.portal.kernel.nio.intraband.Intraband interface.

If you leave the value blank, the portal makes a best effort in choosing an implementation for optimal performance on your system, considering your Intraband welder.

If com.liferay.portal.kernel.nio.intraband.welder.socket.SocketWelder is your Intraband welder, either explicitly configured for your "intraband.welder.impl" property value or automatically chosen by the portal, then the portal chooses the com.liferay.portal.kernel.nio.intraband.nonblocking.SelectorIntraband class as the Intraband implementation.

Otherwise the portal chooses the com.liferay.portal.kernel.nio.intraband.blocking.ExecutorIntraband class as the Intraband implementation.

Performance tips:

FIFO, if provided by your Linux or Unix OS, only works with ExecutorIntraband. To use FIFO, you must either specify the ExecutorIntraband class as the Intraband implementation or leave the value blank for the portal to automatically choose it.

SelectorIntraband uses a Selector instance to manage all registered SelectableChannels. It uses the Selector instance with a single polling thread to serve all read/write requests. SelectorIntraband has a lower CPU overhead than ExecutorIntraband. However, SelectorIntraband can potentially have unnecessary read/write latency (if any callback is holding the polling thread).

ExecutorIntraband works with any ScatteringByteChannel/GatheringByteChannel registered pair. ExecutorIntraband launches a dedicated polling thread for each channel, in blocking mode. So ExecutorIntraband has higher CPU overhead than SelectorIntraband, but since each channel polling is isolated, ExecutorIntraband can provide better throughput and response time.

For a system that requires tons of connections over Intraband, it is best to use SelectorIntraband to avoid massive polling threads.

For a system that requires limited connections over Intraband, it is best to use ExecutorIntraband to maximize throughput and response time.

Defaults:

    intraband.impl=

Examples:

    intraband.impl=com.liferay.portal.kernel.nio.intraband.blocking.ExecutorIntraband
    intraband.impl=com.liferay.portal.kernel.nio.intraband.nonblocking.SelectorIntraband


Set this to true to launch a separate dedicated thread to reap overdue mail. Otherwise, the overdue mail is reaped in a lazy manner--reaped only when new mail comes in and old mail goes out.

Performance tips:

With the dedicated reaper thread, overdue mail is reaped in a timely manner, reducing the memory footprint but costing more CPU power. Without the dedicated reaper thread, CPU power is conserved but the memory footprint can potentially grow large.

Generally, for small and frequent mail messages, it is better to turn this off. For huge and infrequent mail messages, it is better to turn this on.

Defaults:

    intraband.mailbox.reaper.thread.enabled=false


Set the number of milliseconds to keep mail living in the mailbox.

Defaults:

    intraband.mailbox.storage.life=10000


Set the directory name to contain the dump out class files. This directory will be created under operation system's temporary directory.

Defaults:

    intraband.proxy.dump.classes.dir=IntrabandProxyClasses


Set this to true to dump out generated proxy classes as class files into the directory specified by the property "intraband.proxy.dump.classes.dir".

Defaults:

    intraband.proxy.dump.classes.enabled=true


Set default Intraband synchronized operation timeout time in milliseconds.

Defaults:

    intraband.timeout.default=10000


Specify the class name of an Intraband welder. The class must implement the com.liferay.portal.kernel.nio.intraband.welder.Welder interface.

If you leave the value blank, the portal makes a best effort in choosing an implementation for optimal performance on your system.

If your system's OS is not Windows and the portal finds mkfifo command in your system's PATH, the portal chooses the FIFO welder class com.liferay.portal.kernel.nio.intraband.welder.fifo.FIFOWelder.

Otherwise, the portal chooses the socket welder class com.liferay.portal.kernel.nio.intraband.welder.socket.SocketWelder.

Consider the following example that compares the performance of these two welders:

On average, the FIFO welder outperforms the socket welder on both throughput and response latency, until packages reach about 2 to 4 megabytes in size.

On an uncustomized modern Linux kernel, the best package size for the FIFO FIFO welder is 64 kilobytes. The FIFO welder's best package size is the system's maximum non-blocking package size. To calculate it for your system, multiply your system's pipe size (ulimit -p) by the number of kernel buffers your system can allocate.

Executing 'ulimit -p' returns the following pipe size:

     pipe size (512 bytes) * 8 = 4 kilobytes

The kernel can allocate up to 16 buffers. Multiplying the pipe size by the the number of buffers results in the system's maximum non-blocking package size:

     4 kilobytes * 16 kernel buffers = 64 kilobytes

As package size grows past this best size, the FIFO welder's performance declines, but is still better than the socket welder's performance; that is, until the package size reaches about 2 to 4 megabytes. At that package size, FIFO welder performs the same as socket welder. It's only when packages are greater than that size that socket welder performs better. For these huge packages, you can either use the socket welder class or recompile the Linux kernel to support a larger pipe size and more kernel buffers.

Defaults:

    intraband.welder.impl=

Examples:

    intraband.welder.impl=com.liferay.portal.kernel.nio.intraband.welder.fifo.FIFOWelder
    intraband.welder.impl=com.liferay.portal.kernel.nio.intraband.welder.socket.SocketWelder


Set the send and receive buffer size, in bytes, for both the server and client socket peers.

Defaults:

    intraband.welder.socket.buffer.size=65536


Specify whether to keep the socket on both the server and client socket peers alive.

Defaults:

    intraband.welder.socket.keep.alive=false


Specify whether to recycle the address on the server and client socket peers and on the temporary server socket channel.

Defaults:

    intraband.welder.socket.reuse.address=true


Specify a port number from which the SocketWelder automatically starts searching for an available port to open up a temporary ServerSocketChannel to bind the server and client. Since it doesn't matter which port this ServerSocketChannel listens on, SocketWelder uses to the first available port.

After one client socket is accepting, the ServerSocketChannel is closed and recycled.

Defaults:

    intraband.welder.socket.server.start.port=32354


Specify how long, if at all, the socket should linger on both the server and client socket peers. This value is used as the integer parameter in the call to Socket.setSoLinger(boolean, int).

A non-positive value turns off lingering resulting in calling Socket.setSoLinger(false, int).

Defaults:

    intraband.welder.socket.so.linger=0


Specify the SO_TIMEOUT on both the server and client socket peers. This value is used in calling to Socket.setSoTimeout(int).

Defaults:

    intraband.welder.socket.so.timeout=0


Specify whether to enable TCP_NODELAY on both the server and client socket peers. This value is used in the calling Socket.setTcpNoDelay(boolean).

Defaults:

    intraband.welder.socket.tcp.no.delay=true


Top of Page

Invoker


The invoker filter will attempt to cache InvokerFilterChain objects based on the request URI and dispatcher. Set this property to false to disable caching of InvokerFilterChain objects.

Defaults:

    invoker.filter.chain.cache.enabled=true


The invoker filter will reject any request to the portal where the request URI is longer than this value. For technical reasons, we should generally not allow more than 4000 characters.

Defaults:

    invoker.filter.uri.max.length=4000


Top of Page

Javadoc Manager


Set this property to true to enable runtime querying of Javadoc information. This is used by the JSON web service at http://localhost:8080/api/jsonws to give users better information about the API. The Javadoc manager uses very little memory and has little effect on the startup time, but both can be optimized by disabling this feature.

Defaults:

    javadoc.manager.enabled=true


Top of Page

JSON


Set this to true to require JSON service calls to have a valid authentication token. This property is not used unless the property "auth.token.check.enabled" is also set to true.

Defaults:

    json.service.auth.token.enabled=true


Input a list of comma delimited IPs that can access the JSON service without specifying an authentication token. Input a blank list to allow any IP to access the JSON service. SERVER_IP will be replaced with the IP of the host server.

The default value of 255.255.255.255 means that no one can access the JSON service without an authentication token since 255.255.255.255 is an invalid IP.

Defaults:

    json.service.auth.token.hosts.allowed=255.255.255.255


Input a list of comma delimited class names that cannot be invoked via JSON.

Defaults:

    json.service.invalid.class.names=\
        com.liferay.documentlibrary.service.DLAppServiceUtil,\
        com.liferay.mail.kernel.service.MailServiceUtil,\
        com.liferay.portal.kernel.service.CompanyServiceUtil,\
        com.liferay.portal.kernel.service.PortalServiceUtil,\
        com.liferay.portal.kernel.service.PortletServiceUtil


Input a list of comma delimited method names that cannot be invoked via JSON.

Defaults:

    json.service.invalid.method.names=\
        getOSGiServiceIdentifier


Top of Page

JSON Web Service


Set this property to true to enable JSON web services. Note that setting this to false will cause portlets that make JSON web service calls from working.

Defaults:

    json.web.service.enabled=true


Set this property to true if JSON web services are discoverable through the API page.

Defaults:

    jsonws.web.service.api.discoverable=true


Input a list of comma delimited HTTP methods that are not accessible. For example, if you want to have a read only API, then set this property to "DELETE,POST,PUT".

Defaults:

    jsonws.web.service.invalid.http.methods=


Set this property to true to ensure that a JSON web service action can only be invoked by its expected HTTP method.

For example, the annotation com.liferay.portal.kernel.jsonwebservice.JSONWebService may configure the expected HTTP method for an action to be a GET request. However, the URL for that GET request may be too long, and so you may need to call that with a POST request. Setting this property to false loosens this requirement and allows the POST request to invoke an action that is supposed to only be called by a GET request.

Defaults:

    jsonws.web.service.strict.http.method=false


The property "jsonws.web.service.paths.excludes" denotes patterns for JSON web service action paths that are not allowed even if they match one of the patterns set in "jsonws.web.service.paths.includes".

Defaults:

    jsonws.web.service.paths.excludes=


The property "jsonws.web.service.paths.includes" denotes patterns for JSON web service action paths that are allowed. Set a blank pattern to allow any service action path.

Defaults:

    jsonws.web.service.paths.includes=


Top of Page

Live Users


Set this to true to enable tracking via Live Users.

Defaults:

    live.users.enabled=false


Top of Page

Lock


Input a list of comma delimited class names that implement com.liferay.portal.kernel.lock.LockListener. A lock listener allows you to specify logic around how an object is locked. The implementation must be thread safe.

This property is not read by the portal except for portal properties overridden by liferay-hook.xml. It remains here only as a reference.

Examples:

    lock.listeners=com.liferay.portlet.documentlibrary.util.DLFileEntryLockListener


Set the lock expiration time for each class.


Locks for publishing processes should expire after 10 minutes.

Defaults:

    lock.expiration.time.com.liferay.portal.kernel.staging.Staging=600000


Locks for document library folders should expire after 1 day.

Defaults:

    lock.expiration.time.com.liferay.document.library.kernel.model.DLFolder=86400000


Locks for document library files should expire after 1 day.

Defaults:

    lock.expiration.time.com.liferay.document.library.kernel.model.DLFileEntry=86400000


Locks for message board threads should never expire.

Defaults:

    lock.expiration.time.com.liferay.message.boards.model.MBThread=0


Top of Page

Mail


Set the batch size for outbound emails. Set this property to 0 to submit to the mail server a request to send an email with multiple recipients all at once. Set a value greater than 0 to split up the list of recipients by the batch size so that multiple requests are submitted to the mail server to ensure that the mail server's recipient size limit is not reached.

Defaults:

    mail.batch.size=0


Set the JNDI name to lookup the Java Mail session. If none is set, then the portal will attempt to create the Java Mail session based on the properties prefixed with "mail.session.".

Examples:

    mail.session.jndi.name=mail/MailSession


Set the properties used to create the Java Mail session. The property prefix "mail.session." will be removed before it is used to create the session object. These properties will only be read if the property "mail.session.jndi.name" is not set.

Defaults:

    mail.session.mail=false
    mail.session.mail.pop3.host=localhost
    mail.session.mail.pop3.password=
    mail.session.mail.pop3.port=110
    mail.session.mail.pop3.user=
    mail.session.mail.smtp.auth=false
    mail.session.mail.smtp.host=localhost
    mail.session.mail.smtp.password=
    mail.session.mail.smtp.port=25
    mail.session.mail.smtp.user=
    mail.session.mail.store.protocol=pop3
    mail.session.mail.transport.protocol=smtp


Set this to false if an administrator should not be allowed to change the mail domain via the Admin portlet.

Defaults:

    mail.mx.update=true


Input a list of comma delimited email addresses that will receive a BCC of every email sent through the mail server.

Defaults:

    mail.audit.trail=


Set the name of a class that implements com.liferay.mail.util.Hook. The mail server will use this class to ensure that the mail and portal servers are synchronized on user information. The portal will not know how to add, update, or delete users from the mail server except through this hook.

This property is not read by the portal except for portal properties overridden by liferay-hook.xml. It remains here only as a reference.

Examples:

    mail.hook.impl=com.liferay.mail.util.DummyHook
    mail.hook.impl=com.liferay.mail.util.SendmailHook
    mail.hook.impl=com.liferay.mail.util.ShellHook


SendmailHook

Set the commands for adding, updating, and deleting a user where %1% is the user ID and %2% is the password. Set the home and virtual user table information.

Defaults:

    mail.hook.sendmail.add.user=adduser %1% -s /bin/false
    mail.hook.sendmail.change.password=autopasswd %1% %2%
    mail.hook.sendmail.delete.user=userdel -r %1%
    mail.hook.sendmail.home=/home
    mail.hook.sendmail.virtusertable=/etc/mail/virtusertable
    mail.hook.sendmail.virtusertable.refresh=bash -c "makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable"


ShellHook

Set the location of the shell script that will interface with any mail server.

Defaults:

    mail.hook.shell.script=/usr/sbin/mailadmin.ksh


Set this to true to throw an exception when com.liferay.util.mail.MailEngine fails to send an email.

Defaults:

    mail.throws.exception.on.failure=false


Top of Page

Minifier


Set this to true to enable minification of CSS and JavaScript resources.

Defaults:

    minifier.enabled=true


The strip filter will attempt to cache inline minified CSS and JavaScript content. Set this property to false to disable caching of inline minified content.

Defaults:

    minifier.inline.content.cache.enabled=true


Input a list of comma delimited values that will cause the minified CSS to not be cached if those values are contained in the content.

Defaults:

    minifier.inline.content.cache.skip.css=


Input a list of comma delimited values that will cause the minified JavaScript to not be cached if those values are contained in the content.

Defaults:

    minifier.inline.content.cache.skip.javascript=getSessionId,encryptedUserId


Top of Page

Mobile Device Rules


Set this property to true to cache the user's device profile to the HTTP session. If this property is false, then the portal will perform device detection for each request.

Defaults:

    mobile.device.session.cache.enabled=true


Set this to true if mobile device rules should be published to live by default.

Defaults:

    mobile.device.rules.publish.to.live.by.default=true


This property defines the postfix that will be localized and appended to the name of a copied rule group.

Defaults:

    mobile.device.rules.rule.group.copy.postfix=copy


Top of Page

Module Framework


Set the module framework beginning start level. The module framework will proceed to this start level after all static bundles are installed. All static bundles will be configured to this start level by default during installation, unless they have been assigned a different value from the property "module.framework.initial.bundles".

Defaults:

    module.framework.beginning.start.level=6


Set the module framework runtime start level. The module framework will proceed to this start level after all dynamic bundles are installed.

Defaults:

    module.framework.dynamic.install.start.level=10


Set the module framework runtime start level. The module framework will proceed to this start level after the Spring context is initialized.

Defaults:

    module.framework.runtime.start.level=20


Set the module framework asynchronous stop wait timeout in milliseconds.

Defaults:

    module.framework.stop.wait.timeout=30000


Set the directory which will form the base path of the module framework.

Defaults:

    module.framework.base.dir=${liferay.home}/osgi


Set a comma delimited list of directories to scan for modules and configurations to auto deploy.

Defaults:

    module.framework.auto.deploy.dirs=\
        ${module.framework.configs.dir},\
        ${module.framework.marketplace.dir},\
        ${module.framework.modules.dir},\
        ${module.framework.war.dir}


Set the interval in milliseconds on how often to scan the directories for changes.

Defaults:

    module.framework.auto.deploy.interval=5000


Set the directory where the module framework configurations will be placed.

Defaults:

    module.framework.configs.dir=${module.framework.base.dir}/configs


Set the directory where the module framework marketplace applications will be placed.

Defaults:

    module.framework.marketplace.dir=${module.framework.base.dir}/marketplace


Set the directory where the module framework modules libraries will be placed.

Defaults:

    module.framework.modules.dir=${module.framework.base.dir}/modules


Set the directory where the module framework portal libraries will be placed.

Defaults:

    module.framework.portal.dir=${module.framework.base.dir}/portal


Set the directory where the module framework WAR applications will be placed.

Defaults:

    module.framework.war.dir=${module.framework.base.dir}/war


Set the directory where the module framework will persist its state.

Defaults:

    module.framework.state.dir=${module.framework.base.dir}/state


Set this to true to register Liferay's core services into the module framework.

Defaults:

    module.framework.register.liferay.services=true

Defaults:

    module.framework.services.ignored.interfaces=\
        com.liferay.portal.cache.thread.local.ThreadLocalCacheAdvice,\
        com.liferay.portal.dao.jdbc.util.DataSourceSwapper,\
        com.liferay.portal.dao.orm.hibernate.SessionFactoryImpl,\
        com.liferay.portal.increment.BufferedIncrementAdvice,\
        com.liferay.portal.kernel.dao.orm.SessionFactory,\
        com.liferay.portal.kernel.security.pacl.PACLConstants,\
        com.liferay.portal.messaging.async.AsyncAdvice,\
        com.liferay.portal.resiliency.service.PortalResiliencyAdvice,\
        com.liferay.portal.search.IndexableAdvice,\
        com.liferay.portal.security.access.control.AccessControlAdvice,\
        com.liferay.portal.security.lang.DoPrivilegedFactory,\
        com.liferay.portal.service.persistence.impl.*,\
        com.liferay.portal.systemevent.SystemEventAdvice,\
        com.liferay.portal.verify.model.*,\
        com.mchange.*,\
        com.sun.*,\
        java.*,\
        org.aopalliance.*,\
        org.apache.lucene.*,\
        org.apache.tika.*,\
        org.hibernate.*,\
        org.springframework.*


Set a comma delimited list of jars that are deployed to the app server's "/WEB-INF/lib" directory to be statically included in all bundles.

Defaults:

    module.framework.static.jars=\
        com.liferay.portal.osgi.web.jasper.plugins.taglib.jar,\
        util-taglib.jar


Set a comma delimited list of Java packages that are exported to the module framework as extra system packages.

Defaults:

    module.framework.system.packages.extra=\
        com.ibm.crypto.provider,\
        com.ibm.db2.jcc,\
        com.microsoft.sqlserver.jdbc,\
        com.mysql.jdbc,\
        com.p6spy.engine.spy,\
        com.sun.security.auth.module,\
        com.sybase.jdbc4.jdbc,\
        oracle.jdbc,\
        org.postgresql,\
        org.hsqldb.jdbc,\
        org.mariadb.jdbc,\
        sun.misc,\
        sun.net.util,\
        sun.security.provider,\
        \
        #
        # WebSocket Support
        #
        \
        com.ibm.websphere.wsoc,\
        io.undertow.websockets.jsr,\
        javax.websocket,\
        javax.websocket.server,\
        org.apache.tomcat.websocket.server,\
        org.eclipse.jetty.websocket.server,\
        org.glassfish.tyrus.servlet,\
        weblogic.websocket.tyrus


Pass arbitrary extra properties to the framework using the prefix: "module.framework.properties." to avoid avoid colliding with other frameworks that may be running within the same JVM.

Defaults:

    module.framework.properties.ds.lock.timeout.milliseconds=1800000
    module.framework.properties.ds.stop.timeout.milliseconds=1800000
    module.framework.properties.felix.fileinstall.bundles.new.start=true
    module.framework.properties.felix.fileinstall.bundles.startActivationPolicy=false
    module.framework.properties.felix.fileinstall.bundles.startTransient=false
    module.framework.properties.felix.fileinstall.disableNio2=true
    module.framework.properties.felix.fileinstall.filter=(?!^override$).+
    module.framework.properties.felix.fileinstall.log.level=2
    module.framework.properties.felix.fileinstall.noInitialDelay=true
    module.framework.properties.felix.fileinstall.optionalImportRefreshScope=managed
    module.framework.properties.gosh.args=--noshutdown
    module.framework.properties.lpkg.deployer.dir=${module.framework.base.dir}/marketplace
    module.framework.properties.org.apache.felix.eventadmin.ThreadPoolSize=2

Defaults:

    module.framework.properties.org.osgi.framework.bootdelegation=\
        __redirected,\
        com.liferay.aspectj,\
        com.liferay.aspectj.*,\
        com.liferay.portal.servlet.delegate,\
        com.liferay.portal.servlet.delegate*,\
        com.sun.ccpp,\
        com.sun.ccpp.*,\
        com.sun.crypto.*,\
        com.sun.image.*,\
        com.sun.jmx.*,\
        com.sun.jna,\
        com.sun.jndi.*,\
        com.sun.mail.*,\
        com.sun.management.*,\
        com.sun.media.*,\
        com.sun.msv.*,\
        com.sun.org.*,\
        com.sun.syndication,\
        com.sun.tools.*,\
        com.sun.xml.*,\
        com.yourkit.*,\
        sun.*

Defaults:

    module.framework.properties.org.osgi.framework.bundle.parent=framework

Defaults:

    module.framework.properties.org.osgi.framework.system.capabilities.extra=

Defaults:

    module.framework.properties.osgi.compatibility.eagerStart.LazyActivation=false
    module.framework.properties.osgi.console=localhost:11311
    module.framework.properties.osgi.context.bootdelegation=false
    module.framework.properties.osgi.module.lock.timeout=3600


Top of Page

Module Framework Web Application Bundles


Web Application Bundles (WABs) are defined by the OSGi standard and represent web applications as valid OSGi bundles.


Set a comma delimited list of packages to include for all WABs.

Defaults:

    module.framework.web.generator.default.servlet.packages=\
        com.liferay.portal.model,\
        com.liferay.portal.security.access.control,\
        com.liferay.portal.security.auth,\
        com.liferay.portal.security.permission,\
        com.liferay.portal.service,\
        com.liferay.portal.servlet,\
        com.liferay.portal.servlet.filters.aggregate,\
        com.liferay.portal.servlet.filters.dynamiccss,\
        com.liferay.portal.osgi.web.servlet.jsp.compiler,\
        com.liferay.portal.spring.context,\
        com.liferay.portal.theme,\
        com.liferay.portal.util,\
        com.liferay.portlet,\
        com.sun.el,\
        com.sun.el.lang,\
        com.sun.el.parser,\
        com.sun.el.stream,\
        com.sun.el.util,\
        org.apache.commons.chain.generic,\
        org.apache.naming.java,\
        \
        #
        # WebSocketSupport
        #
        \
        com.ibm.websphere.wsoc,\
        io.undertow.websockets.jsr,\
        javax.websocket,\
        javax.websocket.server,\
        org.apache.tomcat.websocket.server,\
        org.eclipse.jetty.websocket.server,\
        org.glassfish.tyrus.servlet,\
        weblogic.websocket.tyrus


Set a comma delimited list of paths to exclude from all WABs.

Defaults:

    module.framework.web.generator.excluded.paths=\
        WEB-INF/lib/ant.jar,\
        WEB-INF/lib/aopalliance.jar,\
        WEB-INF/lib/aopalliance-1.0.jar,\
        WEB-INF/lib/asm-debug-all.jar,\
        WEB-INF/lib/aspectj-rt.jar,\
        WEB-INF/lib/bnd.jar,\
        WEB-INF/lib/ccpp.jar,\
        WEB-INF/lib/commons-beanutils.jar,\
        WEB-INF/lib/commons-chain.jar,\
        WEB-INF/lib/commons-codec.jar,\
        WEB-INF/lib/commons-collections.jar,\
        WEB-INF/lib/commons-discovery.jar,\
        WEB-INF/lib/commons-fileupload.jar,\
        WEB-INF/lib/commons-httpclient.jar,\
        WEB-INF/lib/commons-io.jar,\
        WEB-INF/lib/commons-lang.jar,\
        WEB-INF/lib/commons-logging.jar,\
        WEB-INF/lib/commons-logging-1.1.1.jar,\
        WEB-INF/lib/dom4j.jar,\
        WEB-INF/lib/el-api.jar,\
        WEB-INF/lib/ext-util-bridges.jar,\
        WEB-INF/lib/ext-util-java.jar,\
        WEB-INF/lib/ext-util-taglib.jar,\
        WEB-INF/lib/hibernate-commons-annotations.jar,\
        WEB-INF/lib/hibernate-core.jar,\
        WEB-INF/lib/jaxen.jar,\
        WEB-INF/lib/jaxrpc.jar,\
        WEB-INF/lib/jdom.jar,\
        WEB-INF/lib/jms.jar,\
        WEB-INF/lib/jodd.jar,\
        WEB-INF/lib/json-java.jar,\
        WEB-INF/lib/jstl-api.jar,\
        WEB-INF/lib/jstl-impl.jar,\
        WEB-INF/lib/liferay-icu4j.jar,\
        WEB-INF/lib/log4j.jar,\
        WEB-INF/lib/log4j-extras.jar,\
        WEB-INF/lib/mail.jar,\
        WEB-INF/lib/persistence.jar,\
        WEB-INF/lib/portal-impl.jar,\
        WEB-INF/lib/portal-kernel.jar,\
        WEB-INF/lib/portlet.jar,\
        WEB-INF/lib/rome.jar,\
        WEB-INF/lib/servlet-api.jar,\
        WEB-INF/lib/slf4j-api.jar,\
        WEB-INF/lib/spring-aop.jar,\
        WEB-INF/lib/spring-aspects.jar,\
        WEB-INF/lib/spring-beans.jar,\
        WEB-INF/lib/spring-context.jar,\
        WEB-INF/lib/spring-context-support.jar,\
        WEB-INF/lib/spring-core.jar,\
        WEB-INF/lib/spring-expression.jar,\
        WEB-INF/lib/spring-jdbc.jar,\
        WEB-INF/lib/spring-jms.jar,\
        WEB-INF/lib/spring-orm.jar,\
        WEB-INF/lib/spring-oxm.jar,\
        WEB-INF/lib/spring-tx.jar,\
        WEB-INF/lib/spring-web.jar,\
        WEB-INF/lib/spring-webmvc.jar,\
        WEB-INF/lib/spring-webmvc-portlet.jar,\
        WEB-INF/lib/tika-core.jar,\
        WEB-INF/lib/tika-parsers.jar,\
        WEB-INF/lib/util-taglib.jar,\
        WEB-INF/lib/xalan.jar,\
        WEB-INF/lib/xercesImpl.jar,\
        WEB-INF/lib/xercesImpl-2.9.1.jar,\
        WEB-INF/lib/xml-apis.jar,\
        WEB-INF/lib/xml-apis-1.3.04.jar,\
        WEB-INF/lib/xmlsec.jar,\
        WEB-INF/lib/xstream.jar


Set this to true to store the generated WABs.

Defaults:

    module.framework.web.generator.generated.wabs.store=false


Set the directory where the generated WABs will be stored. This property is not used unless the property "module.framework.web.generator.generated.wabs.store" is set to true.

Defaults:

    module.framework.web.generator.generated.wabs.store.dir=${module.framework.base.dir}/wabs


Set the custom header for all bundles which are deployed through the WAB mechanism. The text within the angle brackets should be replaced with the custom header/value. The header/value format is BND (http://www.aqute.biz/Bnd/Format).

Examples:

    module.framework.web.generator.headers.
=


Set the specific WAB bundle for which the custom header defined in "module.framework.web.generator.headers.

=" should be generated. The WAB bundle is defined by appending a suffix to the property containing the WAB's bundle symbolic name, enclosed in brackets.

Examples:

    module.framework.web.generator.headers.Import-Package[my-hook]=


Set a comma delimited list of headers that are required in cases where the dependency analysis of the WAB does not resolve the dependency. This can occur when the headers are dynamically loaded using the Java reflection API.

Defaults:

    module.framework.web.generator.headers.DynamicImport-Package=

Defaults:

    module.framework.web.generator.headers.Export-Package=

Defaults:

    module.framework.web.generator.headers.Import-Package=


Set a comma delimited list of dependencies the JSP compiler requires for the generated WABs. Two types of references can be used. The first is a file system path to a JAR or folder containing Java classes. The second is the name of a Java class, which will be resolved to a path dynamically at runtime.

Defaults:

    module.framework.web.generator.jsp.compiler.dependencies=\
        com.liferay.portal.PortalException,\
        com.liferay.portal.util.PortalImpl,\
        javax.el.ELException,\
        javax.portlet.PortletException,\
        javax.servlet.ServletException,\
        javax.servlet.jsp.JspException


Top of Page

Multicast


Consolidate multicast address and port settings in one location for easier maintenance. These settings must correlate to your physical network configuration (i.e. firewall, switch, and other network hardware matter) to ensure speedy and accurate communication across a cluster.

Each address and port combination represent a conversation that is made between different nodes. If they are not unique or correctly set, there will be a potential of unnecessary network traffic that may cause slower updates or inaccurate updates.


See the property "cluster.link.channel.properties.control".

Defaults:

    multicast.group.address["cluster-link-control"]=239.255.0.1
    multicast.group.port["cluster-link-control"]=23301

Examples:

    multicast.group.address["cluster-link-control"]=ff0e::8:8:1


See the properties "cluster.link.channel.properties.transport.0" and "cluster.link.channel.system.properties".

Defaults:

    multicast.group.address["cluster-link-udp"]=239.255.0.2
    multicast.group.port["cluster-link-udp"]=23302

Examples:

    multicast.group.address["cluster-link-udp"]=ff0e::8:8:2


See the property "cluster.link.channel.system.properties".

Defaults:

    multicast.group.address["cluster-link-mping"]=239.255.0.3
    multicast.group.port["cluster-link-mping"]=23303

Examples:

    multicast.group.address["cluster-link-mping"]=ff0e::8:8:3


See the properties "ehcache.multi.vm.config.location" and "ehcache.multi.vm.config.location.peerProviderProperties".

Defaults:

    multicast.group.address["multi-vm"]=239.255.0.5
    multicast.group.port["multi-vm"]=23305


Top of Page

Notifications


Set the maximum number of transient events allowed to queue for a user. In case of excess events, the events with the closest expiration time are removed.

Defaults:

    notifications.max.events=100


Top of Page

OpenOffice


Specify the file extensions of files to allow conversions from. Entries must be limited by what is supported by OpenOffice.

Defaults:

    openoffice.conversion.source.extensions[drawing]=odg
    openoffice.conversion.source.extensions[presentation]=odp,ppt,pptx,sxi
    openoffice.conversion.source.extensions[spreadsheet]=csv,ods,sxc,tsv,xls,xlsx
    openoffice.conversion.source.extensions[text]=doc,docx,html,odt,rtf,sxw,txt,wpd


Specify the file extensions of files to allow conversions to. Entries must be limited by what is supported by OpenOffice.

Defaults:

    openoffice.conversion.target.extensions[drawing]=pdf,svg,swf
    openoffice.conversion.target.extensions[presentation]=odp,pdf,ppt,swf,sxi
    openoffice.conversion.target.extensions[spreadsheet]=csv,ods,pdf,sxc,tsv,xls
    openoffice.conversion.target.extensions[text]=doc,odt,pdf,rtf,sxw,txt


Top of Page

Phone Number Format


Set the name of a class that implements com.liferay.portal.kernel.format.PhoneNumberFormat. It will be used for formatting and validating phone numbers.

This property is not read by the portal except for portal properties overridden by liferay-hook.xml. It remains here only as a reference.

Examples:

    phone.number.format.impl=com.liferay.portal.format.IdenticalPhoneNumberFormatImpl
    phone.number.format.impl=com.liferay.portal.format.InternationalPhoneNumberFormatImpl
    phone.number.format.impl=com.liferay.portal.format.USAPhoneNumberFormatImpl


This regular expression follows the international phone number notation specified by the Extensible Provisioning Protocol (EPP). EPP style phone numbers use the format +CCC.NNNNNNNNNNxEEEE where C is the 1-3 digit country code, N is up to 14 digits, and E is the (optional) extension. The leading plus sign and the dot following the country code are required. The literal 'x' character is required only if an extension is provided.

See http://www.itu.int/rec/T-REC-E.123, http://www.itu.int/rec/T-REC-E.164, and http://tools.ietf.org/html/rfc4933 for more information.

Defaults:

    phone.number.format.international.regexp=^\\+[0-9]{1,3}\.[0-9]{4,14}(?:x.+)?$


The North American Numbering Plan (NANP) is the telephone numbering plan for the United States, Canada, Bermuda, and 16 Caribbean nations.

See http://en.wikipedia.org/wiki/North_American_Numbering_Plan for more information.

Defaults:

    phone.number.format.usa.regexp=^(?:\\+?1[-. ]?)?(?:\\(?([0-9]{3})\\)?[-. ]?)?([0-9]{3})[-. ]?([0-9]{4})$


Top of Page

Poller


Specify the notification events timeout in milliseconds. This prevents the poller from locking up the application server.

Defaults:

    poller.notifications.timeout=1000


Specify the poller request timeout in milliseconds. This prevents the poller from locking up the application server.

Defaults:

    poller.request.timeout=1000


Top of Page

POP


Set this to true to enable polling of email notifications from a POP server. The user credentials are the same used for SMTP authentication and are specified in the mail/MailSession configuration for each application server.

Defaults:

    pop.server.notifications.enabled=false


Set the interval on which the POPNotificationsMessageListener will run. The value is set in one minute increments.

Defaults:

    pop.server.notifications.interval=1


Set this property to create a special MX subdomain to receive all portal related email (e.g. events.liferay.com). This means configuring a default inbox for the domain and receiving all emails into that inbox.

This approach may not be allowed for some organizations. If you cannot use the subdomain approach, unset this value and Liferay will use the replyTo address specified in the portlet preferences.

Defaults:

    pop.server.subdomain=events


Top of Page

Portal Fabric


Set this to true to turn on the Portal Fabric feature.

Defaults:

    portal.fabric.enabled=false


Set the class name for the fabric selector that must implement com.liferay.portal.fabric.agent.selectors.FabricAgentSelector

Defaults:

    portal.fabric.agent.selector.class=com.liferay.portal.fabric.agent.selectors.MinSystemCPULoadFabricAgentSelector


Set the host name or ip address that fabric server binds to.

Defaults:

    portal.fabric.server.host=0.0.0.0


Set the port that fabric server binds to.

Defaults:

    portal.fabric.server.port=8923


Set the number of boss group threads used for the fabric server.

Defaults:

    portal.fabric.server.boss.group.thread.count=1


Set the number of worker group threads used for the fabric server.

Defaults:

    portal.fabric.server.worker.group.thread.count=1


Set the timeout in milliseconds for fabric worker startup waiting.

Defaults:

    portal.fabric.server.worker.startup.timeout=60000


Set the folder compression level used for fabric server file server. Acceptable value range is [-1, 9]. Values are literally mapped to java.util.zip.Deflater compression level.

Defaults:

    portal.fabric.server.file.server.folder.compression.level=1


Set the number of event executor group threads used for the fabric server file server.

Defaults:

    portal.fabric.server.file.server.group.thread.count=1


Set the number of event executor group threads used for the fabric server registration.

Defaults:

    portal.fabric.server.registeration.group.thread.count=1


Set the repository parent folder used by fabric workers to upload results.

Defaults:

    portal.fabric.server.repository.parent.folder=NettyFabricServer-repository-parent


Set the timeout in milliseconds for repository file getting.

Defaults:

    portal.fabric.server.repository.get.file.timeout=600000


Set the number of event executor group threads used for fabric server RPC.

Defaults:

    portal.fabric.server.rpc.group.thread.count=1


Set the timeout in milliseconds for RPC relay.

Defaults:

    portal.fabric.server.rpc.relay.timeout=600000


Set to true to enable portal class path warmup on fabric agent registration.

Defaults:

    portal.fabric.server.warmup.agent.on.register=true


Set the quiet period in milliseconds for fabric thread pool shutdown.

Defaults:

    portal.fabric.shutdown.quiet.period=0


Set the timeout in milliseconds for fabric thread pool shutdown.

Defaults:

    portal.fabric.shutdown.timeout=60000


Top of Page

Portal Resiliency


Set this to true to turn on the Portal Resiliency feature.

Defaults:

    portal.resiliency.enabled=false


Set this to true to add a footer to each Portal Resiliency rendered portlet. Each footer identifies the SPI that is rendering it.

At runtime you can toggle showing the footer by setting the URL parameter "portalResiliencyPortletShowFooter" to "1" for on or "0" for off.

Defaults:

    portal.resiliency.portlet.show.footer=false


Specify the maximum number of sockets to keep alive for each com.liferay.portal.resiliency.spi.agent.HttpClientSPIAgent instance. Reusing the socket for HTTP communication saves TCP connection setup/teardown overhead and avoids the TCP/IP protocol's slow start congestion control.

Increasing limit on the number of sockets to keep alive can generally improvement each HttpClientSPIAgent's performance under heavy concurrent load, but more TCP ports and file descriptors are occupied.

Defaults:

    portal.resiliency.spi.agent.client.pool.max.size=20


Top of Page

Quartz

Defaults:

    memory.scheduler.org.quartz.jobStore.class=org.quartz.simpl.RAMJobStore
    memory.scheduler.org.quartz.scheduler.instanceId=AUTO
    memory.scheduler.org.quartz.scheduler.instanceName=MemoryQuartzSchedulerEngineInstance
    memory.scheduler.org.quartz.scheduler.jobFactory.class=org.quartz.simpl.SimpleJobFactory
    memory.scheduler.org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
    memory.scheduler.org.quartz.threadPool.threadCount=5
    memory.scheduler.org.quartz.threadPool.threadPriority=5

Defaults:

    persisted.scheduler.org.quartz.dataSource.ds.connectionProvider.class=com.liferay.portal.scheduler.quartz.internal.QuartzConnectionProvider
    persisted.scheduler.org.quartz.jobStore.class=com.liferay.portal.scheduler.quartz.internal.PortalJobStore
    persisted.scheduler.org.quartz.jobStore.dataSource=ds
    persisted.scheduler.org.quartz.jobStore.misfireThreshold=60000
    persisted.scheduler.org.quartz.jobStore.tablePrefix=QUARTZ_
    persisted.scheduler.org.quartz.jobStore.useProperties=false
    persisted.scheduler.org.quartz.scheduler.instanceId=AUTO
    persisted.scheduler.org.quartz.scheduler.instanceName=PersistedQuartzSchedulerEngineInstance
    persisted.scheduler.org.quartz.scheduler.jobFactory.class=org.quartz.simpl.SimpleJobFactory
    persisted.scheduler.org.quartz.scheduler.skipUpdateCheck=true
    persisted.scheduler.org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
    persisted.scheduler.org.quartz.threadPool.threadCount=5
    persisted.scheduler.org.quartz.threadPool.threadPriority=5


Top of Page

REST Proxy


Input a list of comma delimited URL prefixes which the portal is allowed to make proxy requests to. Input a blank list to allow any URLs.

Defaults:

    rest.proxy.url.prefixes.allowed=http://search.yahooapis.com/ContentAnalysisService


Top of Page

Retry Advice


Set the max number of times to retry annotated service calls when retry acceptor rejects the result.

Defaults:

    retry.advice.max.retries=5


Top of Page

Retry Data Source


Set the max number of times to retry getting a connection.

Defaults:

    retry.data.source.max.retries=100


Top of Page

Retry JDBC connection on portal startup.


Set the number of seconds to retry getting a JDBC connection on portal startup.

Defaults:

    retry.jdbc.on.startup.delay=0


Set the max number of times to retry getting a JDBC connection on portal startup.

Defaults:

    retry.jdbc.on.startup.max.retries=0


Top of Page

Robots.txt

Defaults:

    robots.txt.with.sitemap=com/liferay/portal/dependencies/robots_txt_with_sitemap.tmpl
    robots.txt.without.sitemap=com/liferay/portal/dependencies/robots_txt_without_sitemap.tmpl


Top of Page

RSS


Set the HTTP connection timeout in milliseconds for reading RSS feeds.

Defaults:

    rss.connection.timeout=2000


Set this to true to enable RSS feeds.

Defaults:

    rss.feeds.enabled=true


Set the name of the display style which will be used by default.

Defaults:

    rss.feed.display.style.default=full-content


Set the default feed type from the feed types defined in the property "rss.feed.types".

Defaults:

    rss.feed.type.default=atom_1.0


Enter a list of comma delimited values of feed types. The supported types should be a subset of those defined for SyndFeed in the ROME project: atom_1.0, rss_1.0, and rss_2.0. See http://java.net/projects/rome for more information.

Defaults:

    rss.feed.types=atom_1.0,rss_1.0,rss_2.0


See the properties "main.servlet.hosts.allowed" and "main.servlet.https.required" on how to protect RSS feeds.

Defaults:

    rss.feeds.hosts.allowed=
    rss.feeds.https.required=false


Set this to true if rss should be published to live by default.

Defaults:

    rss.publish.to.live.by.default=true


Top of Page

RTL


Input a list of comma delimited regular expressions to exclude paths of CSS files that cannot be automatically converted to RTL.

Defaults:

    rtl.css.excluded.paths.regexp=.*\\/ckeditor\\/.*


Top of Page

Sanitizer


Input a list of comma delimited class names that implement com.liferay.portal.kernel.sanitizer.Sanitizer. These classes are used to sanitize content.

This property is not read by the portal except for portal properties overridden by liferay-hook.xml. It remains here only as a reference.

Examples:

    sanitizer.impl=


Top of Page

Scheduler


Set this to false to disable all scheduler classes defined in liferay-portlet.xml.

Defaults:

    scheduler.enabled=true


Set the maximum length of description, group name, and job name fields.

Defaults:

    scheduler.description.max.length=120
    scheduler.group.name.max.length=80
    scheduler.job.name.max.length=80


Top of Page

Scripting


Set the compile mode for the JRuby scripting engine.

Defaults:

    scripting.jruby.compile.mode=jit

Examples:

    scripting.jruby.compile.mode=force
    scripting.jruby.compile.mode=off


Set the threshold at which methods will be compiled when "jit" compile mode is enabled.

Defaults:

    scripting.jruby.compile.threshold=5


Top of Page

Search Container


Set the default number of entries to display per page.

Defaults:

    search.container.page.default.delta=20


Set the available values for the number of entries to display per page. An empty value, or commenting out the value, will disable delta resizing.

Always include the value specified in the property "search.container.page.default.delta", since it is the default page size when no delta is specified. The absolute maximum allowed delta is 200.

Defaults:

    search.container.page.delta.values=5,10,20,30,50,75


Set the maximum number of pages available above and below the currently displayed page.

Defaults:

    search.container.page.iterator.max.pages=25


Set this to false to remove the pagination controls above or below results.

Defaults:

    search.container.show.pagination.top=true
    search.container.show.pagination.bottom=true


Set the number of entries to display per page for top pagination controls. The property "search.container.show.pagination.top" must also be set to true.

Defaults:

    search.container.show.pagination.top.delta=10


Top of Page

Sharepoint


Set the tokens for supported Sharepoint storage paths.

Defaults:

    sharepoint.storage.tokens=document_library


Set the class names for supported Sharepoint storage classes.

Defaults:

    sharepoint.storage.class[document_library]=com.liferay.portlet.documentlibrary.sharepoint.DLSharepointStorageImpl


Top of Page

Sprite


Set the file names used for the auto generated sprites. The default file name used to be ".sprite.png" but is now "_sprite.png" because SiteMinder does not allow file names to start with a period. This property will not need to be changed unless your deployment has a conflict with file names that start with an underline.

Defaults:

    sprite.file.name=_sprite.png
    sprite.properties.file.name=_sprite.properties


Set the root directory for the autogenerated sprites. Not setting the directory means that generated sprites reside in the same location as the original source images.

Defaults:

    sprite.root.dir=


Top of Page

Staging


Set this property to false to avoid deleting the temporary LAR during a a failed staging publication process. In remote staging contexts, this only applies for the staging environment.

Defaults:

    staging.delete.temp.lar.on.failure=true


Set this property to false to avoid deleting the temporary LAR during a a successful staging publication process. In remote staging contexts, this only applies for the staging environment.

Defaults:

    staging.delete.temp.lar.on.success=true


Set this property to false to enable editing on the live site.

Defaults:

    staging.live.group.locking.enabled=true


By default, in a remote staging environment, the live group is marked and staging is prevented on the live group.

To achieve a Content Development - UAT - Production environment, staging must be enabled for the UAT live group involved. When staging is enabled for this group, it becomes the live group with respect to the Content Development server and a staging group with respect to the Production server.

Set this property to true to allow staging for a live group. If set to true, staging can be turned on for a live group, so that it can simultaneously act as both a live group and a staging group.

Defaults:

    staging.live.group.remote.staging.enabled=false


Set the file block sizes for remote staging. If a LAR file used for remote staging exceeds this size, the file will be split into multiple files prior to transmission and then reassembled on the remote server. The default buffer size is 10 megabytes.

Defaults:

    staging.remote.transfer.buffer.size=10485760


Set the interval in hours on how often CheckSystemEventMessageListener will run to check for and delete system events that have been reached the maximum age.

Defaults:

    staging.system.event.check.interval=24


Set this to the maximum age (in number of hours) that a system event will be kept. Note that these settings may be overridden in Portal Settings for each portal server or in Site Settings for each site.

Defaults:

    staging.system.event.max.age=0


Top of Page

Strip


Enter a list of comma delimited paths that should not have its content stripped by the strip filter.

Defaults:

    strip.ignore.paths=/document_library/get_file


Set this property to support usage of the language attribute in the script element. The language attribute is deprecated since HTML4 is in favor of the type attribute.

See http://www.w3.org/TR/html4/interact/scripts.html#h-18.2.1.

This property is not used unless the property "com.liferay.portal.servlet.filters.dynamiccss.DynamicCSSFilter" is set to true.

Defaults:

    strip.js.language.attribute.support.enabled=false


Input a list of comma delimited MIME types that will have its content stripped by the strip filter.

Defaults:

    strip.mime.types=text/html*,text/xml*


Top of Page

Social Activity


Set the length of the counter period for social activities. The value is in a number of days or the special keyword "month" to specify a month.

Defaults:

    social.activity.counter.period.length=month


Adding social activity counters requires a portal level lock to ensure that counters are unique. When the portal fails to acquire a lock, it will attempt to reacquire a lock based on the value specified in this property. The value is interpreted as milliseconds.

A small value will help the system to respond faster. However, if there are too many conflicts, the database will fail with a massive transaction rollback.

Defaults:

    social.activity.lock.retry.delay=100


Set the lock timeout for adding social activity counters. The value is interpreted as milliseconds. See the property "social.activity.counter.lock.retry.delay" for more information on why and how locks are acquired when adding a counter.

Portal level locks are persisted in the database. In the case that there is a corrupted database, one thread may fail to acquire a lock because it thinks another thread has a handle on the lock even though no other thread has a handle on it.

Setting this timeout level ensures that the portal will eventually release the lock so that a new thread can acquire the lock. Do not set this property to a small value because it may expire a legitimate lock held by another thread that it falsely assumed to be a lock that is from a corrupt database.

Defaults:

    social.activity.lock.timeout=10000


Set the limit for results used when performing social activity searches that are subsequently filtered by permissions.

Defaults:

    social.activity.filter.search.limit=200


Set the selector for the set of interpreters that will determine how activities are grouped together.

Defaults:

    social.activity.sets.selector=


Top of Page

Text Extraction


Set this to true if you want text extraction of certain MIME types to use a separate Java process. This will utilize extra resources from the operating system while improving the portal's stability.

Defaults:

    text.extraction.fork.process.enabled=false


Input a list of comma delimited MIME types that will trigger text extraction using a separate Java process.

Defaults:

    text.extraction.fork.process.mime.types=application/x-tika-ooxml


Top of Page

Thread Dump


The thread dump filter will log a thread dump if the portal takes longer than the specified number of seconds to process. The thread dump filter must be enabled via the property "com.liferay.portal.servlet.filters.threaddump.ThreadDumpFilter".

Defaults:

    thread.dump.speed.threshold=5


Top of Page

User Notifications


Set this to true if you want users to acknowledge receipt of user notification events.

Defaults:

    user.notification.event.confirmation.enabled=false


Top of Page

Virtual Hosts


Set the extensions that will be ignored for virtual hosts.

Defaults:

    virtual.hosts.ignore.extensions=\
        .css,\
        .gif,\
        .image/company_logo,\
        .ico,\
        .js,\
        .jpeg,\
        .jsp,\
        .png,\
        /portal/layout,\
        /portal/login,\
        /portal/logout


Set the hosts that will be ignored for virtual hosts.

Defaults:

    virtual.hosts.ignore.hosts=\
        127.0.0.1,\
        localhost


Set the paths that will be ignored for virtual hosts.

Defaults:

    virtual.hosts.ignore.paths=\
        /c,\
        \
        /c/portal/change_password,\
        /c/portal/edit_layout,\
        /c/portal/extend_session,\
        /c/portal/extend_session_confirm,\
        /c/portal/json_service,\
        /c/portal/layout,\
        /c/portal/login,\
        /c/portal/logout,\
        /c/portal/portlet_url,\
        /c/portal/progress_poller,\
        /c/portal/render_portlet,\
        /c/portal/reverse_ajax,\
        /c/portal/session_tree_js_click,\
        /c/portal/status,\
        /c/portal/update_layout,\
        /c/portal/update_terms_of_use


Specify the site name that will default to the company's virtual host. If the specified site has a virtual host, then that will take precedence. If it does not, then it will use the company's virtual host. This property is useful to remove "/web/guest" (or any other site) from the default URL. For example, if this property is not set, then the default URL may be http://localhost:8080/web/guest/home. If this property is set, then the default URL may be http://localhost:8080/home.

Defaults:

    virtual.hosts.default.site.name=Guest


Input a list of comma delimited valid domains and IPs that the portal is allowed to use.

Defaults:

    virtual.hosts.valid.hosts=*

Examples:

    virtual.hosts.valid.hosts=localhost,127.0.0.1,[::1],[0:0:0:0:0:0:0:1]


Top of Page

XML


Set this property to false to process XML external entities, expand XML entities, disable XML secure processing, and enable DTD parsing. It would also expose the portal to XXE attacks (e.g. XML Bomb and XML Quadratic Blowup).

Defaults:

    xml.security.enabled=true


Set this property to false to create the sitemap.xml file based in a layout set. By default a sitemap index is created, which provides links to multiple sitemap files rather than one large file containing all the urlsets. This requires less bandwidth and improves performance. See https://www.sitemaps.org/protocol.html for more information.

Defaults:

    xml.sitemap.index.enabled=true


Set this property to false to disable XML validation in the portal. XML validation should only be disabled if validation cannot be performed because the servers hosting the external DTD or XSD files are not available.

Defaults:

    xml.validation.enabled=true


Top of Page

Xuggler


Set this to true to enable conversion and previewing of videos in the Document Library portlet. See http://www.xuggle.com/xuggler/downloads for more information.

Defaults:

    xuggler.enabled=false


Set the properties used to install Xuggler at runtime.

Defaults:

    xuggler.jar.file[32-linux]=xuggle-xuggler-arch-i686-pc-linux-gnu.jar
    xuggler.jar.file[32-mac]=xuggle-xuggler-arch-i386-xuggle-darwin11.jar
    xuggler.jar.file[32-win]=xuggle-xuggler-arch-i686-w64-mingw32.jar
    xuggler.jar.file[64-linux]=xuggle-xuggler-arch-x86_64-pc-linux-gnu.jar
    xuggler.jar.file[64-mac]=xuggle-xuggler-arch-x86_64-xuggle-darwin11.jar
    xuggler.jar.file[64-win]=xuggle-xuggler-arch-x86_64-w64-mingw32_LIFERAY-PATCHED-1.jar
    xuggler.jar.name[32-linux]=Linux 32-bit JVM (with GNU libc v6)
    xuggler.jar.name[32-mac]=Mac OS X 10.7 32-bit JVM
    xuggler.jar.name[32-win]=Windows 32-bit JVM
    xuggler.jar.name[64-linux]=Linux 64-bit JVM (with GNU libc v6)
    xuggler.jar.name[64-mac]=Mac OS X 10.7 64-bit JVM
    xuggler.jar.name[64-win]=Windows 64-bit JVM
    xuggler.jar.options=32-linux,32-mac,32-win,64-linux,64-mac,64-win
    xuggler.jar.url=https://files.liferay.com/mirrors/xuggle.googlecode.com/svn/trunk/repo/share/java/xuggle/xuggle-xuggler/5.4/


Set these to customize the ffmpeg preset settings used by Xuggler when encoding movie files.

Defaults:

    xuggler.ffpreset.8x8dct=0
    xuggler.ffpreset.bf=0
    xuggler.ffpreset.cmp=+chroma
    xuggler.ffpreset.coder=0
    xuggler.ffpreset.flags=+loop
    xuggler.ffpreset.i_qfactor=0.71
    xuggler.ffpreset.mbtree=1
    xuggler.ffpreset.me_method=umh
    xuggler.ffpreset.me_range=16
    xuggler.ffpreset.qcomp=0.6
    xuggler.ffpreset.qdiff=4
    xuggler.ffpreset.qmin=10
    xuggler.ffpreset.qmax=51
    xuggler.ffpreset.sc_threshold=40
    xuggler.ffpreset.subq=8
    xuggler.ffpreset.trellis=0
    xuggler.ffpreset.wpredp=0

Examples:

    xuggler.ffpreset.flags2=-wpred-dct8x8+mbtree


Top of Page

YUI


Specify the YUI compressor settings used to compress CSS.

Defaults:

    yui.compressor.css.line.break=-1


Top of Page

JSP


javax.servlet.jsp.PageContext#findAttribute(String) is mainly used by a generated JSP servlet, which internally tries page scope attributes first, then with many fallbacks. This is not necessary for Liferay since we always populate tag variables into the page scope explicitly. The fallbacks waste processing power and will never find anything.

Set this property to true to force com.liferay.taglib.servlet. PageContextWrapper#findAttribute(String) to use getAttribute(String) to avoid the unnecessary fallbacks.

Set this property to false if third party JSP code relies on the fallback behavior.

Defaults:

    jsp.page.context.force.get.attribute=true


Set this property to false to disable Liferay's Jasper implementation from dumping JSP servlet java files by default. This default value can be overridden with the OSGi configuration file com.liferay.portal.osgi.web. servlet.context.helper.ServletContextHelperFactory.cfg.

Defaults:

    jsp.servlet.init.param.keepgenerated=true


All properties that start with "jsp.servlet.init.param." will be passed into Liferay's Jasper implementation as init parameters.

Examples:

    jsp.servlet.init.param.compilerClassName=
    jsp.servlet.init.param.compilerSourceVM=
    jsp.servlet.init.param.compilerTargetVM=


Set the JspWriter buffer size. JspFactoryWrapper reads this value as the buffer size when creating new JspWriters. This value should be kept at 0 for performance reasons.

Defaults:

    jsp.writer.buffer.size=0


Top of Page

Servlet Filters


The absolute redirects filter is used to ensure that all redirects are absolute. It should not be disabled because it also sets the company ID in the request so that subsequent calls in the thread have the company ID properly set. This filter should also always be the first filter in the list of filters.

Defaults:

    com.liferay.portal.servlet.filters.absoluteredirects.AbsoluteRedirectsFilter=true


The aggregate filter is used to aggregate CSS and JavaScript. Do not disable this filter because it performs necessary aggregation of portal resources. You may, however, set the property "minifier.enabled" to disable minification of resources.

Defaults:

    com.liferay.portal.servlet.filters.aggregate.AggregateFilter=true


The auth verifier filter is used to verify whether a request is authenticated or not.

Defaults:

    com.liferay.portal.servlet.filters.authverifier.AuthVerifierFilter=true


The auto login filter processes the classes in the property "auto.login.hooks" to provide auto login functionality.

Defaults:

    com.liferay.portal.servlet.filters.autologin.AutoLoginFilter=true


The cache filter caches processed web content. See ehcache.xml to modify the cache expiration time to live.

Defaults:

    com.liferay.portal.servlet.filters.cache.CacheFilter=true


The CAS filter is used to provide CAS based single sign on.

Examples:

    com.liferay.portal.servlet.filters.sso.cas.CASFilter=true


The dynamic CSS filter is used to parse Sass CSS.

Defaults:

    com.liferay.portal.servlet.filters.dynamiccss.DynamicCSSFilter=true


The ETag filter is used to generate ETag headers.

Defaults:

    com.liferay.portal.servlet.filters.etag.ETagFilter=true


If the user can unzip compressed HTTP content, the GZip filter will zip up the HTTP content before sending it to the user. This will speed up page rendering for users that are on dial up.

Defaults:

    com.liferay.portal.servlet.filters.gzip.GZipFilter=false


The header filter is used to set request headers.

Defaults:

    com.liferay.portal.servlet.filters.header.HeaderFilter=true


The ignore filter will ignore certain files from being accessed directly from a browser.

Defaults:

    com.liferay.portal.servlet.filters.ignore.IgnoreFilter=true


The I18n filter is used to internationalize URLs. See the property "locale.prepend.friendly.url.style" for more information.

Defaults:

    com.liferay.portal.servlet.filters.i18n.I18nFilter=true


The JSON content type filter is used because Internet Explorer does not recognize the content type "application/json". See LPS-33187.

Defaults:

    com.liferay.portal.servlet.filters.jsoncontenttype.JSONContentTypeFilter=false


The language filter replaces JavaScript code that makes a client side call to translate a piece of text with the actual translated value. For example, a typical piece of JavaScript code fits the pattern "Liferay.Language.get('key')" where 'key' is the text to translate. This filter will replace the entire piece of code with the translated text. This is very useful because it will lower the number of client calls by translating the text before the browser receives the JavaScript file.

Defaults:

    com.liferay.portal.servlet.filters.language.LanguageFilter=true


The NTLM filter is used to provide NTLM based single sign on.

Defaults:

    com.liferay.portal.servlet.filters.sso.ntlm.NtlmFilter=true


The NTLM post filter is used to fix known issues with NTLM and ajax requests. See LPS-3795.

Defaults:

    com.liferay.portal.servlet.filters.sso.ntlm.NtlmPostFilter=true


The OpenSSO filter is used to provide OpenSSO based single sign on.

Defaults:

    com.liferay.portal.servlet.filters.sso.opensso.OpenSSOFilter=true


The servlet authorizing filter allows external servlets to be authorized by the portal. See LEP-4682.

Defaults:

    com.liferay.portal.servlet.filters.servletauthorizing.ServletAuthorizingFilter=true


The session ID filter ensures that only one session is created between HTTP and HTTPS sessions. This is useful if you want users to login via HTTPS but have them view the rest of the site via HTTP. This is disabled by default. Do not enable this unless you thoroughly understand how cookies, HTTP, and HTTPS work.

Defaults:

    com.liferay.portal.servlet.filters.sessionid.SessionIdFilter=false


The session max allowed filter invalidates the latest session if the latest session exceeds the maximum number of allowed sessions. This filter is not used unless the property "session.max.allowed" is greater than 0.

Defaults:

    com.liferay.portal.servlet.filters.sessionmaxallowed.SessionMaxAllowedFilter=false


The Sharepoint filter allows users to access documents in the Document Library directly from Microsoft Office using the Sharepoint protocol.

Defaults:

    com.liferay.portal.sharepoint.SharepointFilter=true


The strip filter will remove blank lines from the outputted content. This will significantly speed up page rendering.

Defaults:

    com.liferay.portal.servlet.filters.strip.StripFilter=true


The theme preview filter generates a preview of the currently applied theme that can be used by the Dreamweaver Theming plugin. This is disabled by default. Set the "themePreview" parameter to 1 in the URL to access the theme preview for any page. For example, a URL can be http://localhost:8080/web/guest?themePreview=1.

Defaults:

    com.liferay.portal.servlet.filters.themepreview.ThemePreviewFilter=false


The thread dump filter will automatically log thread dumps when the portal is too slow. Behavior can be configured via the property "thread.dump.speed.threshold".

Defaults:

    com.liferay.portal.servlet.filters.threaddump.ThreadDumpFilter=false


The thread local filter cleans up short lived thread locals managed by CentralizedThreadLocal to prevent memory leaks.

Defaults:

    com.liferay.portal.servlet.filters.threadlocal.ThreadLocalFilter=true


The unsynchronized print writer pool filter enables pooling print writers to minimize the creation of java.io.PrintWriter instances because it is an expensive action.

Defaults:

    com.liferay.portal.servlet.filters.unsyncprintwriterpool.UnsyncPrintWriterPoolFilter=true


The upload servlet request filter is needed to wrap multipart requests into UploadServletRequest. It should not be disabled because it is needed by many Liferay portlets and helps protect against CSRF attacks.

Defaults:

    com.liferay.portal.servlet.filters.uploadservletrequest.UploadServletRequestFilter=true


Based on the popular and very useful mod_rewrite of Apache, UrlRewriteFilter allows you to rewrite URLs before they get processed. It uses an xml file, called urlrewrite.xml, which can be found in WEB-INF.

Defaults:

    com.liferay.portal.servlet.filters.urlrewrite.UrlRewriteFilter=true


The valid host name filter will check the host name from request's host header. It rejects a request with invalid server name to prevent XSS and other host header manipulation attacks.

Defaults:

    com.liferay.portal.servlet.filters.validhostname.ValidHostNameFilter=true


The virtual host filter maps hosts to public and private pages. For example, if the public virtual host is www.helloworld.com and the friendly URL is /helloworld, then http://www.helloworld.com is mapped to http://localhost:8080/web/helloworld.

Defaults:

    com.liferay.portal.servlet.filters.virtualhost.VirtualHostFilter=true


Top of Page

Upload Servlet Request


Set the threshold size to prevent extraneous serialization of uploaded data.

Defaults:

    com.liferay.portal.upload.LiferayFileItem.threshold.size=262144


Set the threshold size to prevent out of memory exceptions caused by caching excessively large uploaded data. Default is 1024 * 1024 * 10.

Defaults:

    com.liferay.portal.upload.LiferayInputStream.threshold.size=10485760


Top of Page

Web Server


Set the HTTP and HTTPs ports when running the portal in a J2EE server that is sitting behind another web server like Apache. Set the values to -1 if the portal is not running behind another web server like Apache.

Defaults:

    web.server.http.port=-1
    web.server.https.port=-1


Set the hostname that will be used when the portlet generates URLs. Leaving this blank will mean the host is derived from the servlet container.

Defaults:

    web.server.host=


Set the preferred protocol.

Examples:

    web.server.protocol=https


Set this to true to display the server name at the bottom of every page. This is useful when testing clustering configurations so that you can know which node you are accessing.

Defaults:

    web.server.display.node=false


Set this to true to use the property "web.server.forward.host.header" to get the host. The property "web.server.host" must be set its default value.

Defaults:

    web.server.forwarded.host.enabled=false


Set the HTTP header to use to get the host. The property "web.server.forwarded.host.enabled" must be set to true.

Defaults:

    web.server.forwarded.host.header=X-Forwarded-Host


Set this to true to use the property "web.server.forward.port.header" to get the port.

Defaults:

    web.server.forwarded.port.enabled=false


Set the HTTP header to use to get the port. The property "web.server.forwarded.port.enabled" must be set to true.

Defaults:

    web.server.forwarded.port.header=X-Forwarded-Port


Set this to true to use the property "web.server.forward.protocol.header" to get the protocol. The property "web.server.protocol" must not have been overriden.

Defaults:

    web.server.forwarded.protocol.enabled=false


Set the HTTP header to use to get the protocol. The property "web.server.forwarded.protocol.enabled" must be set to true.

Defaults:

    web.server.forwarded.protocol.header=X-Forwarded-Proto


Set this to true to enable support for legacy proxy servers (Apache 1.x).

Defaults:

    web.server.proxy.legacy.mode=false


Top of Page

WebDAV


Set a list of files for the WebDAV servlet to ignore processing.

Defaults:

    webdav.ignore=.DS_Store,.metadata_index_homes_only,.metadata_never_index,.Spotlight-V100,.TemporaryItems,.Trashes,Backups.backupdb


Specify the number of minutes before a generated nonce expires. When a client contacts the server with an expired nonce, the server will send back a HTTP error 401 with stale=true.

Defaults:

    webdav.nonce.expiration=30


Top of Page

Main Servlet


Servlets can be protected by com.liferay.portal.servlet.filters.secure.SecureFilter.

Input a list of comma delimited IPs that can access this servlet. Input a blank list to allow any IP to access this servlet. SERVER_IP will be replaced with the IP of the host server.

Defaults:

    main.servlet.hosts.allowed=


Set this to true if this servlet can only be accessed via https.

Defaults:

    main.servlet.https.required=false


Top of Page

Atom Servlet


See the properties "main.servlet.hosts.allowed" and "main.servlet.https.required" on how to protect this servlet.

Defaults:

    atom.servlet.hosts.allowed=127.0.0.1,SERVER_IP
    atom.servlet.https.required=false


Top of Page

Axis Servlet


See the properties "main.servlet.hosts.allowed" and "main.servlet.https.required" on how to protect this servlet.

Defaults:

    axis.servlet.hosts.allowed=127.0.0.1,SERVER_IP
    axis.servlet.https.required=false


Top of Page

Dynamic Resource Servlet


Set the paths which are allowed to be served from the Dynamic Resource Servlet scratch.

Defaults:

    dynamic.resource.servlet.allowed.paths=\
        /sprite


Top of Page

Google Gadget Servlet


Set the servlet mapping for the Google Gadget servlet.

Defaults:

    google.gadget.servlet.mapping=/google_gadget


Top of Page

JSON Servlet


See the properties "main.servlet.hosts.allowed" and "main.servlet.https.required" on how to protect this servlet.

Defaults:

    json.servlet.hosts.allowed=
    json.servlet.https.required=false


Top of Page

JSON Web Service Servlet


See the properties "main.servlet.hosts.allowed" and "main.servlet.https.required" on how to protect this servlet.

Defaults:

    jsonws.servlet.hosts.allowed=
    jsonws.servlet.https.required=false


Top of Page

Netvibes Servlet


Set the servlet mapping for the Netvibes servlet.

Defaults:

    netvibes.servlet.mapping=/netvibes


Top of Page

Spring Remoting Servlet


See the properties "main.servlet.hosts.allowed" and "main.servlet.https.required" on how to protect this servlet.

Defaults:

    spring.remoting.servlet.hosts.allowed=127.0.0.1,SERVER_IP
    spring.remoting.servlet.https.required=false


Top of Page

Tunnel Servlet


See the properties "main.servlet.hosts.allowed" and "main.servlet.https.required" on how to protect this servlet.

Defaults:

    tunnel.servlet.hosts.allowed=127.0.0.1,SERVER_IP
    tunnel.servlet.https.required=false


Top of Page

Web Server Servlet


Set this to a comma delimited list of MIME types to send an Accept-Ranges header.

Defaults:

    web.server.servlet.accept.ranges.mime.types=audio/basic,audio/mid,audio/midi,audio/mod,audio/mp3,audio/mp4,audio/mpeg,audio/mpeg3,audio/ogg,audio/vorbis,audio/wav,audio/x-m4a,audio/x-mid,audio/x-midi,audio/x-mod,audio/x-mpeg,audio/x-pn-realaudio,audio/x-realaudio,audio/x-wav,video/avi,video/mp4,video/mpeg,video/ogg,video/quicktime,video/x-flv,video/x-m4v,video/x-ms-wmv,video/x-msvideo


Set this to true to check whether the request is for an image from the legacy Image Gallery. This is only necessary if you are migrating from a version older than 6.1.

Defaults:

    web.server.servlet.check.image.gallery=false


Set this property to true to enable directory indexing.

Defaults:

    web.server.servlet.directory.indexing.enabled=false


Set the maximum range fields that are allowed to be requested by a browser.

Defaults:

    web.server.servlet.max.range.fields=10


Set the level of verbosity to use in the server information line printed by the web server servlet. Valid values are "full", which gives all of the version information (e.g. Liferay Portal Community Edition 6.1.0 CE etc.) or "partial", which gives only the name portion (e.g. Liferay Portal Community Edition).

Defaults:

    web.server.servlet.version.verbosity=full


Top of Page

WebDAV Servlet


See the properties "main.servlet.hosts.allowed" and "main.servlet.https.required" on how to protect this servlet.

Defaults:

    webdav.servlet.hosts.allowed=
    webdav.servlet.https.required=false


Top of Page

Widget Servlet


Set the servlet mapping for the Widget servlet.

Defaults:

    widget.servlet.mapping=/widget


Top of Page

Admin Portlet


Input a list of default group names separated by \n characters that are associated with newly created users.

Defaults:

    admin.default.group.names=


Input a list of default organization group names separated by \n characters that are associated with newly created users.

Defaults:

    admin.default.organization.group.names=


Input a list of default regular role names separated by \n characters that are associated with newly created users.

Defaults:

    admin.default.role.names=User


Input a list of default user group names separated by \n characters that are associated with newly created users.

Defaults:

    admin.default.user.group.names=


Set this to true to ensure that a user is synchronized with the default associations of groups, roles, and user groups upon every login. Set this to false if default associations should only be applied to a user when a user is created.

Defaults:

    admin.sync.default.associations=false


Input a list of mail host names separated by \n characters.

Defaults:

    admin.mail.host.names=


Input a list of reserved screen names separated by \n characters.

Defaults:

    admin.reserved.screen.names=


Input a list of reserved email addresses separated by \n characters.

Defaults:

    admin.reserved.email.addresses=


Configure email notification settings.

Defaults:

    admin.email.from.name=Joe Bloggs
    admin.email.from.address=test@liferay.com

Defaults:

    admin.email.user.added.enabled=true
    admin.email.user.added.subject=com/liferay/portlet/admin/dependencies/email_user_added_subject.tmpl
    admin.email.user.added.body=com/liferay/portlet/admin/dependencies/email_user_added_body.tmpl
    admin.email.user.added.no.password.body=com/liferay/portlet/admin/dependencies/email_user_added_no_password_body.tmpl

Defaults:

    admin.email.password.reset.subject=com/liferay/portlet/admin/dependencies/email_password_reset_subject.tmpl
    admin.email.password.reset.body=com/liferay/portlet/admin/dependencies/email_password_reset_body.tmpl

Defaults:

    admin.email.password.sent.subject=com/liferay/portlet/admin/dependencies/email_password_sent_subject.tmpl
    admin.email.password.sent.body=com/liferay/portlet/admin/dependencies/email_password_sent_body.tmpl

Defaults:

    admin.email.verification.subject=com/liferay/portlet/admin/dependencies/email_verification_subject.tmpl
    admin.email.verification.body=com/liferay/portlet/admin/dependencies/email_verification_body.tmpl


Input a list of web analytics types separated by \n characters.

Defaults:

    admin.analytics.types=google\npiwik


Add a comma delimited list of properties that are obfuscated and replaced with ******** when viewed in the Control Panel.

Defaults:

    admin.obfuscated.properties=auth.mac.shared.key,auth.token.shared.secret,captcha.engine.recaptcha.key.private,default.admin.password,dl.file.entry.preview.generation.decrypt.passwords.pdfbox,dl.repository.guest.password,jdbc.default.password,mail.session.mail.pop3.password,mail.session.mail.smtp.password,tunneling.servlet.shared.secret


Top of Page

Announcements Portlet


Configure email notification settings.

Defaults:

    announcements.email.from.name=
    announcements.email.from.address=

Defaults:

    announcements.email.to.name=
    announcements.email.to.address=noreply@liferay.com

Defaults:

    announcements.email.subject=com/liferay/portlet/announcements/dependencies/email_subject.tmpl
    announcements.email.body=com/liferay/portlet/announcements/dependencies/email_body.tmpl


Set the list of announcement types. The display text of each of the announcement types is set in content/Language.properties.

Defaults:

    announcements.entry.types=general,news,test


Set the interval in minutes on how often CheckEntryMessageListener will run to check for new announcements. Users will be notified via email of new announcements.

Defaults:

    announcements.entry.check.interval=15


Set the available values for the number of announcements to display per page.

Defaults:

    announcements.entry.page.delta.values=5,10,20,30,50,75


Top of Page

Asset


Input a list of comma delimited default properties for new categories. Each item of the list should have the following format: "key:value".

Defaults:

    asset.categories.properties.default=


Set the following to false to specify that searching and browsing using categories should only show assets that have been assigned the selected category explicitly. When set to true, the children categories are also included in the search.

Defaults:

    asset.categories.search.hierarchical=true


Set the maximum number of entries for the Asset Categories Selector. A value of -1 will load all entries and the results will be not paginated.

Defaults:

    asset.categories.selector.max.entries=50


Set the limit for results used when performing asset searches that are subsequently filtered by permissions.

Defaults:

    asset.filter.search.limit=200


Set the name of the vocabulary which will be created by default.

Defaults:

    asset.vocabulary.default=Topic


Set a property with the prefix "asset.renderer.enabled." and a suffix with the asset renderer factory class name to enable or disable an asset renderer factory. The default setting is true. See LPS-6085 for more information.

Examples:

    asset.renderer.enabled.com.liferay.portlet.documentlibrary.asset.DLFileEntryAssetRendererFactory=false


Top of Page

Blogs Portlet


Set this to true to enable comments for blogs entries.

Defaults:

    blogs.entry.comments.enabled=true


Top of Page

Blogs Service


Configure email notification settings.

Defaults:

    blogs.email.from.name=
    blogs.email.from.address=

Defaults:

    blogs.email.entry.added.enabled=true
    blogs.email.entry.added.subject=${resource:com/liferay/portlet/blogs/dependencies/email_entry_added_subject.tmpl}
    blogs.email.entry.added.body=${resource:com/liferay/portlet/blogs/dependencies/email_entry_added_body.tmpl}

Defaults:

    blogs.email.entry.updated.enabled=true
    blogs.email.entry.updated.subject=${resource:com/liferay/portlet/blogs/dependencies/email_entry_updated_subject.tmpl}
    blogs.email.entry.updated.body=${resource:com/liferay/portlet/blogs/dependencies/email_entry_updated_body.tmpl}

Defaults:

    blogs.page.abstract.length=400

Defaults:

    blogs.rss.abstract.length=200


Set the excerpt length for linkbacks.

Defaults:

    blogs.linkback.excerpt.length=200


Set this to true to enable pingbacks.

Defaults:

    blogs.pingback.enabled=true


Set this to true to enable trackbacks.

Defaults:

    blogs.trackback.enabled=false


Set this to true to enable pinging Google on new and updated blog entries.

Defaults:

    blogs.ping.google.enabled=true


Set the available values for the number of blogs to display per page.

Defaults:

    blogs.entry.page.delta.values=5,10,20,30,50,75


Set this to true to enable previous and next navigation for blogs entries.

Defaults:

    blogs.entry.previous.and.next.navigation.enabled=true


Set the maximum file size for images stored with blogs entries. The images can be uploaded using an Alloy Editor, Cover Image, or Image Selector. A value of 0 for the maximum file size can be used to indicate unlimited file size. However, the maximum file size allowed is set in the property "com.liferay.portal.upload.UploadServletRequestImpl.max.size". The default value is 5 mb.

Defaults:

    blogs.image.max.size=5242880


Set valid file extensions for blog images. A file extension of * will permit all file extensions.

Defaults:

    blogs.image.extensions=.gif,.jpeg,.jpg,.png


Set this to true if blogs should be published to live by default.

Defaults:

    blogs.publish.to.live.by.default=false


Top of Page

Calendar


Set this to true if calendar should be published to live by default.

Defaults:

    calendar.publish.to.live.by.default=true


Top of Page

Discussion Tag Library


Configure email notification settings for discussions.

Defaults:

    discussion.email.comments.added.enabled=true
    discussion.email.subject=com/liferay/portlet/messageboards/dependencies/discussion_email_subject.tmpl
    discussion.email.body=com/liferay/portlet/messageboards/dependencies/discussion_email_body.tmpl


Set this to true if the subscription checkbox for discussion comments will be checked by default.

Defaults:

    discussion.subscribe.by.default=true


Input a list of semicolon delimited elements and attributes allowed in discussion comments. This will be used by the editor to allow that specific markup and by the backend to sanitize the content.

Attributes can be optionally specified as a comma delimited list. If no attribute is specified, all the attributes will be cleaned up when the discussion comment is added.

The supported syntax is a subset of the one documented in http://docs.ckeditor.com/#!/guide/dev_allowed_content_rules-section-string-format

The following grammar describes the supported subset (parenthesis is used for grouping, '*' means zero or more repetitions, and '|' is used to describe alternatives):

     allowed-content : element (; element)*
         element : element-name | element-name[attribute (, atribute)*]

Defaults:

    discussion.comments.allowed.content=a[href];em;p;span[class];strong;u

Examples:

    discussion.comments.allowed.content=a[href,title];em;p;strong;u


Set this property to true if users can edit their own discussion comments even if they do not have the permissions defined through the Site Members role.

Defaults:

    discussion.comments.always.editable.by.owner=false


Set the value for the minimum number of discussion comments to display before paginating. As we paginate based on top level comments, we may display more discussion comments than the specified value until we find a top level discussion comment.

Defaults:

    discussion.comments.delta.value=50


Set the discussion comments format.

Defaults:

    discussion.comments.format=html

Examples:

    discussion.comments.format=bbcode


Set the maximum number of discussion comments. A value of 0 for the maximum discussion comments can be used to indicate unlimited discussion comments.

Defaults:

    discussion.max.comments=1000


Top of Page

Document Library Portlet

Defaults:

    dl.actions.visible=false

Defaults:

    dl.comment.ratings.enabled=true


Set the list of supported display views.

Defaults:

    dl.display.views=icon,descriptive,list

Defaults:

    dl.entry.columns=name,document-type,size,status,modified-date,create-date,action

Defaults:

    dl.file.entry.columns=name,size,locked

Defaults:

    dl.folder.columns=name,num-of-folders,num-of-documents

Defaults:

    dl.folders.search.visible=true

Defaults:

    dl.ratings.enabled=true

Defaults:

    dl.related.assets.enabled=true

Defaults:

    dl.subfolders.visible=true

Defaults:

    dl.tabs.visible=false


Top of Page

Document Library Service


Configure email notification settings.

Defaults:

    dl.email.from.name=
    dl.email.from.address=

Defaults:

    dl.email.file.entry.added.enabled=true
    dl.email.file.entry.added.subject=${resource:com/liferay/portlet/documentlibrary/dependencies/email_file_entry_added_subject.tmpl}
    dl.email.file.entry.added.body=${resource:com/liferay/portlet/documentlibrary/dependencies/email_file_entry_added_body.tmpl}

Defaults:

    dl.email.file.entry.updated.enabled=true
    dl.email.file.entry.updated.subject=${resource:com/liferay/portlet/documentlibrary/dependencies/email_file_entry_updated_subject.tmpl}
    dl.email.file.entry.updated.body=${resource:com/liferay/portlet/documentlibrary/dependencies/email_file_entry_updated_body.tmpl}


Set this property to true to enable execution of antivirus check when files are submitted into a store. Setting this value to true will prevent any potential virus files from entering the store but will not allow for file quarantines.

Defaults:

    dl.store.antivirus.enabled=false


Set the name of a class that implements com.liferay.document.library.kernel.antivirus.AntivirusScanner. The document library server will use this to scan documents for viruses.

Defaults:

    dl.store.antivirus.impl=com.liferay.portlet.documentlibrary.antivirus.DummyAntivirusScannerImpl

Examples:

    dl.store.antivirus.impl=com.liferay.portlet.documentlibrary.antivirus.ClamAntivirusScannerImpl


These properties define the replacement strings for certain characters to get safe file names. They are used in com.liferay.portal.util.FileImpl See LPS-69122 for more information.

You should not modify these properties unless you are completely certain that no file has been stored using previous values.

Defaults:

    dl.store.file.impl.safe.file.name.2.ampersand=_AMP_
    dl.store.file.impl.safe.file.name.2.close.parenthesis=_CP_
    dl.store.file.impl.safe.file.name.2.open.parenthesis=_OP_
    dl.store.file.impl.safe.file.name.2.semicolon=_SEM_


Set the name of a class that implements com.liferay.document.library.kernel.store.Store. The document library server will use this to persist documents.

Defaults:

    dl.store.impl=com.liferay.portal.store.file.system.FileSystemStore

Examples:

    dl.store.impl=com.liferay.portal.store.db.DBStore
    dl.store.impl=com.liferay.portal.store.file.system.AdvancedFileSystemStore
    dl.store.impl=com.liferay.portal.store.s3.S3Store


Set this to false to allow users to update file entries by uploading a file with an extension different from the one of the originally uploaded file. There is a known issue where setting this to true will break OSX compatibility. See LPS-10770 for more information.

Defaults:

    dl.file.extensions.strict.check=false


Characters that are not allowed in directory names and file names.

Defaults:

    dl.char.blacklist=\\\\,//,:,*,?,\",<,>,|,../,/..


Characters that are not allowed as the last character in directory names or file names.

Defaults:

    dl.char.last.blacklist=\\u0020,.


Directory names and file names that are blacklisted regardless of the extension.

Defaults:

    dl.name.blacklist=con,prn,aux,nul,com1,com2,com3,com4,com5,com6,com7,com8,com9,lpt1,lpt2,lpt3,lpt4,lpt5,lpt6,lpt7,lpt8,lpt9


You can map a PNG for generic thumbnails by adding the image to the theme's file system folder. For example, the generic thumbnail for documents can be found in: /_unstyled/images/file_system/large/document.png.

Defaults:

    dl.file.generic.names=compressed,document,flash,image,music,pdf,presentation,spreadsheet,video
    dl.file.generic.extensions[compressed]=lar,rar,zip
    dl.file.generic.extensions[document]=doc,docx,pages,rtf,odt
    dl.file.generic.extensions[flash]=flv,swf
    dl.file.generic.extensions[image]=bmp,gif,jpeg,jpg,odg,png,svg
    dl.file.generic.extensions[music]=acc,mid,mp3,oga,ogg,wav,wma
    dl.file.generic.extensions[pdf]=pdf
    dl.file.generic.extensions[presentation]=key,keynote,odp,pps,ppt,pptx
    dl.file.generic.extensions[spreadsheet]=csv,numbers,ods,xls,xlsx
    dl.file.generic.extensions[video]=avi,m4v,mov,mp4,mpg,ogv,qt,rm,wmv


Set the maximum size for a file's indexable content. Files larger than this property will only have this amount of their content indexed. A value of -1 indicates that all of a file's content will be indexed. A value of 0 indicates that none of the file's content will be indexed.

Defaults:

    dl.file.indexing.max.size=1048576


Set the file extensions that will be ignored when indexing file contents. Files with these extensions will not have their contents indexed, only their metadata will be indexed.

Defaults:

    dl.file.indexing.ignore.extensions=.bmp,.gif,.jpeg,.jpg,.lar,.odg,.png,.svg

Examples:

    dl.file.indexing.ignore.extensions=.pdf,.ppt


Set the number of file entries that will be indexed in every iteration when indexing file entries.

Defaults:

    dl.file.indexing.interval=500


You can map a GIF for the extension by adding the image to the theme's image display and document library folder. The wildcard extension of * will be ignored. For example, the default image for the DOC extension would be found in: /_unstyled/images/file_system/small/doc.gif.

Defaults:

    dl.file.icons=.bmp,.css,.doc,.docx,.dot,.gif,.gz,.htm,.html,.jpeg,.jpg,.js,.lar,.odb,.odf,.odg,.odp,.ods,.odt,.pdf,.png,.ppt,.pptx,.rtf,.swf,.sxc,.sxi,.sxw,.tar,.tiff,.tgz,.txt,.vsd,.xls,.xlsx,.xml,.zip,.jrxml


Set this to true to check whether folders are empty or not and display a empty or full icon. Setting it to false disables the check and will always display an empty icon to speed up performance.

Defaults:

    dl.folder.icon.check.count=true


Set which file extensions are comparable by the diff tool. Any binary files listed here will only be comparable if OpenOffice is enabled and the the file is convertable to text.

Defaults:

    dl.comparable.file.extensions=.css,.doc,.docx,.js,.htm,.html,.odt,.rtf,.sxw,.txt,.xml


Set this to true to enable comments for document library files.

Defaults:

    dl.file.entry.comments.enabled=true


Set this to true to enable conversions for document library files.

This property is not used unless OpenOffice is also enabled. See the property "openoffice.server.enabled".

Defaults:

    dl.file.entry.conversions.enabled=true


Set this to true to enable drafts for document library files.

Defaults:

    dl.file.entry.drafts.enabled=false


Set this to 0 to automatically cancel a check out if it times out. Set this to 1 to automatically check in if a check out times out.

Defaults:

    dl.file.entry.lock.policy=0


Set this to true to force users to perform a check in via the Document Library user interface when using the "Open in MS Office" feature. Set this to false to allow users to automatically check in the file upon closing the appropriate MS Office application.

Defaults:

    dl.file.entry.open.in.ms.office.manual.check.in.required=false


Input a list of comma delimited class names that implement com.liferay.document.library.kernel.util.DLProcessor. These classes will trigger asynchronous processing for document library files.

com.liferay.document.library.kernel.util.PDFProcessor will process all PDF files and, if OpenOffice is enabled, all formats convertable to PDF. Image generation will use PDFBox by default unless ImageMagick is enabled. PDFBox is less accurate in image generation and has trouble with certain fonts.

Defaults:

    dl.file.entry.processors=com.liferay.portlet.documentlibrary.util.AudioProcessorImpl,com.liferay.portlet.documentlibrary.util.ImageProcessorImpl,com.liferay.portlet.documentlibrary.util.PDFProcessorImpl,com.liferay.portlet.documentlibrary.util.RawMetadataProcessorImpl,com.liferay.portlet.documentlibrary.util.VideoProcessorImpl


Input a list of comma delimited mime types that will be excluded from raw metadata extraction.

Defaults:

    dl.file.entry.raw.metadata.processor.excluded.mime.types=application/zip


Set this to 0 to force all updates to file entries to result in a new version. Set this to 1 to keep the version number if no changes are detected or if the only change is from a zero byte binary to a non-zero byte binary.

Defaults:

    dl.file.entry.version.policy=1


Set the values related to preview and thumbnail generation for document library files. The classes enabled under "dl.file.entry.processors" will utilize these parameters to generate the necessary files.

Some parameters are applied universally across all processors (e.g., dl.file.entry.thumbnail.max.height) while others are specific to certain types of generation, as specified (e.g., dl.file.entry.preview.document.depth).

If the property "dl.file.entry.preview.video.height" or the property "dl.file.entry.preview.video.width" is set to 0, then respective height and width of the video file will be used.

See the properties "imagemagick.enabled", "openoffice.server.enabled", and "xuggler.enabled".

Defaults:

    dl.file.entry.preview.enabled=true
    dl.file.entry.preview.document.depth=8
    dl.file.entry.preview.document.dpi=300
    dl.file.entry.preview.document.max.height=0
    dl.file.entry.preview.document.max.width=1000
    dl.file.entry.preview.video.height=360
    dl.file.entry.preview.video.width=640
    dl.file.entry.thumbnail.enabled=true
    dl.file.entry.thumbnail.max.height=300
    dl.file.entry.thumbnail.max.width=300
    dl.file.entry.thumbnail.video.frame.percentage=25

Examples:

    dl.file.entry.thumbnail.custom1.max.height=100
    dl.file.entry.thumbnail.custom1.max.width=100
    dl.file.entry.thumbnail.custom2.max.height=0
    dl.file.entry.thumbnail.custom2.max.width=0


Input a list of comma delimited audio containers for preview files. The supported formats are MP3 and OGG.

Defaults:

    dl.file.entry.preview.audio.containers=mp3,ogg

Examples:

    dl.file.entry.preview.audio.containers=mp3
    dl.file.entry.preview.audio.containers=ogg


Set the bit rate and sample rate values for each audio container format.

Bit rates will be capped at 500000. A value less than 0 will be defaulted to 64000.

Sample rates will be capped at 192000. A value less than 0 will be defaulted to 44100.

Note that some audio container formats may not support the maximum capped values. Care should be taken not to exceed the value allowed by the given format.

Defaults:

    dl.file.entry.preview.audio.bit.rate[mp3]=64000
    dl.file.entry.preview.audio.sample.rate[mp3]=44100

Defaults:

    dl.file.entry.preview.audio.bit.rate[ogg]=64000
    dl.file.entry.preview.audio.sample.rate[ogg]=44100


Input a list of comma delimited audio MIME types that will trigger generation of audio previews.

Defaults:

    dl.file.entry.preview.audio.mime.types=audio/basic,audio/mid,audio/midi,audio/mod,audio/mp3,audio/mp4,audio/mpeg,audio/mpeg3,audio/ogg,audio/vorbis,audio/wav,audio/x-m4a,audio/x-mid,audio/x-midi,audio/x-mod,audio/x-mpeg,audio/x-pn-realaudio,audio/x-realaudio,audio/x-wav


Set this to true to generate document previews automatically when upgrading to 6.1. Setting this to true will cause your upgrade to take longer. If set to false, previews for a document will be generated the first time it is accessed by an end user.

Defaults:

    dl.file.entry.preview.auto.create.on.upgrade=false


Set this to true if you want preview generation to use a separate Java process. This will utilize extra resources from the operating system while improving the portal's stability.

Defaults:

    dl.file.entry.preview.fork.process.enabled=true


Set a comma delimited list of passwords that will be used by PDFBox to generate previews of protected documents. See LPS-68329 for more information.

Defaults:

    dl.file.entry.preview.generation.decrypt.passwords.pdfbox=


Set the interval in seconds before document previews generation times out and it is cancelled when processed by Ghostscript. This property applies only when the property "dl.file.entry.preview.fork.process.enabled" is set to true. See the property "imagemagick.enabled".

Defaults:

    dl.file.entry.preview.generation.timeout.ghostscript=1200


Set the interval in seconds before document previews generation times out and it is cancelled when processed by PDFBox. This property applies only when the property "dl.file.entry.preview.fork.process.enabled" is set to true.

Defaults:

    dl.file.entry.preview.generation.timeout.pdfbox=1200


Input a list of comma delimited image MIME types that will trigger generation of image previews.

Defaults:

    dl.file.entry.preview.image.mime.types=image/bmp,image/gif,image/jpeg,image/pjpeg,image/png,image/tiff,image/x-citrix-jpeg,image/x-citrix-png,image/x-ms-bmp,image/x-png,image/x-tiff


Input a list of comma delimited video containers for preview files. The only formats supported are MP4 and OGV.

Defaults:

    dl.file.entry.preview.video.containers=mp4,ogv

Examples:

    dl.file.entry.preview.video.containers=mp4
    dl.file.entry.preview.video.containers=ogv


Set the bit rate and frame rate values for each preview video container format.

Bit rates will be capped at 1200000. A value less than 0 will be defaulted to 250000.

Frame rates are determined by a numerator divided by a denominator. If either value is less than 0, then the input video's frame rate will be used.

Defaults:

    dl.file.entry.preview.video.bit.rate[mp4]=250000
    dl.file.entry.preview.video.frame.rate.denominator[mp4]=1
    dl.file.entry.preview.video.frame.rate.numerator[mp4]=30

Defaults:

    dl.file.entry.preview.video.bit.rate[ogv]=250000
    dl.file.entry.preview.video.frame.rate.denominator[ogv]=-1
    dl.file.entry.preview.video.frame.rate.numerator[ogv]=-1


Input a list of comma delimited video MIME types that will trigger generation of video previews.

Defaults:

    dl.file.entry.preview.video.mime.types=video/avi,video/mp4,video/mpeg,video/ogg,video/quicktime,video/webm,video/x-flv,video/x-m4v,video/x-ms-wmv,video/x-msvideo


Set this to true to generate Image Gallery thumbnails when accessed via legacy URLs.

Defaults:

    dl.file.entry.ig.thumbnail.generation=false


When migrating images from the Image Gallery (this is only applicable if upgrading from a version prior to Liferay 6.1) to the Document Library, images will be migrated as documents of the type "Image Gallery Image". Asset Publishers configured to display Image Gallery images will display this document type instead after the migration. Set this property to false to migrate Image Gallery images as basic documents instead. This property will not work unless the property "application.startup.events" includes com.liferay.portal.events.AddDefaultDataAction, which it does by default.

Defaults:

    dl.file.entry.type.ig.image.auto.create.on.upgrade=true


Set this to true if document library should be published to live by default.

Defaults:

    dl.publish.to.live.by.default=true


Input a list of comma delimited class names of the third party repositories that extend com.liferay.portal.kernel.repository.BaseRepositoryImpl.

Defaults:

    dl.repository.impl=


Set the credentials to use when guest users access an external repository like CMIS, Documentum, or Sharepoint.

Defaults:

    dl.repository.guest.username=Administrator
    dl.repository.guest.password=password


Set the default display view.

Defaults:

    dl.default.display.view=icon


Set this to true to show hidden mount folders.

Defaults:

    dl.show.hidden.mount.folders=false


Set the character to use for substituting file entry titles when generating WebDAV URLs. This character should not be changed in an existing installation with already created file entries because existing files may contain the substitution char and those will not be accessible through WebDAV until the DLServiceVerifyProcess executes and renames them.

Defaults:

    dl.webdav.substitution.char=^


Top of Page

IFrame Portlet


Specify a role name that a user must be associated with in order to configure the IFrame portlet to use the @password@ token on any portal page except for the user's own private pages. This token is used to post the password of users who access this portlet in order to automatically login to the framed site.

In a high security environment, only users who are trusted not to attempt password theft should be associated with the specified role. See LPS-5272 for more information.

Defaults:

    iframe.password.token.role=


Top of Page

Login Portlet


Configure email notification settings.

Defaults:

    login.email.from.name=
    login.email.from.address=


Set this to true to allow the user to choose a password during account creation.

Defaults:

    login.create.account.allow.custom.password=false


Set this to true to disable the login popup dialog. This should only be set to true if there is a custom login portlet that needs the "Sign In" link to redirect to another page.

Defaults:

    login.dialog.disabled=false


Input a list of sections that will be included in login form navigation.

Defaults:

    login.form.navigation.pre=
    login.form.navigation.post=


Set this to true to prevent attempts to enumerate the portal's users via the forgot password feature. This feature will no longer show an error that would reveal a user's existence.

Defaults:

    login.secure.forgot.password=false


Top of Page

Menu Tag Libraries


Configure maximum number of items to display when using the Menu tag library or the Nav Item tag. If the number of items is higher than the maximum allowed, then the menu will provide an autocomplete search box to display the items.

Defaults:

    menu.max.display.items=15


Top of Page

Message Boards Portlet


Top of Page

Message Boards Service


Configure email notification settings.

Defaults:

    message.boards.email.from.name=[$MESSAGE_USER_NAME$]
    message.boards.email.from.address=
    message.boards.email.bulk=true
    message.boards.email.html.format=true

Defaults:

    message.boards.email.message.added.enabled=true
    message.boards.email.message.added.subject=${resource:com/liferay/portlet/messageboards/dependencies/email_message_added_subject.tmpl}
    message.boards.email.message.added.body=${resource:com/liferay/portlet/messageboards/dependencies/email_message_added_body.tmpl}

Defaults:

    message.boards.email.message.updated.enabled=true
    message.boards.email.message.updated.subject=${resource:com/liferay/portlet/messageboards/dependencies/email_message_updated_subject.tmpl}
    message.boards.email.message.updated.body=${resource:com/liferay/portlet/messageboards/dependencies/email_message_updated_body.tmpl}


Set the name of the category display style which will be used by default.

Defaults:

    message.boards.category.display.styles.default=default


Specify the options that will be provided to the user when editing a category.

Defaults:

    message.boards.category.display.styles=default,question

Defaults:

    message.boards.flags.enabled=true


Set the list of supported message board formats and the default message board format.

Defaults:

    message.boards.message.formats=bbcode,html
    message.boards.message.formats.default=bbcode


Set this to true to allow anonymous posting.

Defaults:

    message.boards.anonymous.posting.enabled=true


Set this to true if users are subscribed by default to a thread they participate in.

Defaults:

    message.boards.subscribe.by.default=true


Enter time in days to automatically expire bans on users. Set this property or the property "message.boards.expire.ban.job.interval" to 0 to disable auto expire.

Defaults:

    message.boards.expire.ban.interval=10

Examples:

    message.boards.expire.ban.interval=0


Set this to true to enable pingbacks.

Defaults:

    message.boards.pingback.enabled=true

Defaults:

    message.boards.ratings.enabled=true

Defaults:

    message.boards.recent.posts.date.offset=7

Defaults:

    message.boards.rss.abstract.length=200

Defaults:

    message.boards.rss.enabled=true

Defaults:

    message.boards.thread.priorities=\
        Urgent|icon-bolt|3.0,\
        Sticky|icon-pushpin|2.0,\
        Announcement|icon-comments|1.0

Defaults:

    message.boards.user.ranks=\
        #Moderator=organization:Message Boards Administrator,\
        #Moderator=organization-role:Message Boards Administrator,\
        #Moderator=regular-role:Message Boards Administrator,\
        #Moderator=site-role:Message Boards Administrator,\
        #Moderator=user-group:Message Boards Administrator,\
        Youngling=0,\
        Padawan=25,\
        Jedi Knight=100,\
        Jedi Master=250,\
        Jedi Council Member=500,\
        Yoda=1000


Set this to true if message boards should be published to live by default.

Defaults:

    message.boards.publish.to.live.by.default=false

Defaults:

    message.boards.thread.as.question.by.default=false


Top of Page

My Places Portlet


Set the display style for the My Places navigation menu.

Defaults:

    my.sites.display.style=simple

Examples:

    my.sites.display.style=classic


Set this to true to show user public sites with no layouts.

Defaults:

    my.sites.show.user.public.sites.with.no.layouts=true


Set this to true to show user private sites with no layouts.

Defaults:

    my.sites.show.user.private.sites.with.no.layouts=true


Set this to true to show public sites with no layouts.

Defaults:

    my.sites.show.public.sites.with.no.layouts=true


Set this to true to show site private sites with no layouts.

Defaults:

    my.sites.show.private.sites.with.no.layouts=true


Set the maximum number of elements that will be shown in the My Sites navigation menu. For example, if the maximum is set to 10, then, at most, 10 sites will be shown.

Defaults:

    my.sites.max.elements=10


Top of Page

Portlet CSS Portlet


Set this to true to enable access to the Look and Feel icon. Setting it to false will disable the ability to modify the portlet CSS at runtime, which can speed up performance.

Defaults:

    portlet.css.enabled=true


Top of Page

Ratings Tag Library


Set the number of stars that will be used by the ratings tag library by default.

Defaults:

    ratings.default.number.of.stars=5


In versions prior to 7.0, ratings stored in database were not normalized. Since 7.0, all values are normalized between 0 and 1.

The properties "ratings.upgrade.stars.normalization.factor" and "ratings.upgrade.thumbs.class.names" are used by the upgrade process to normalize the unnormalized values.

Set this property to specify the normalize factor that will be used during the upgrade process for the different class names that use stars as the ratings mechanism.

The normalize factor is the maximun number of stars for the class name.

Defaults:

    ratings.upgrade.stars.normalization.factor[default]=5

Examples:

    ratings.upgrade.stars.normalization.factor[com.liferay.portlet.blogs.model.BlogsEntry]=10


Set this property to specify which class names use thumbs as ratings. See the property "ratings.upgrade.stars.normalization.factor".

Defaults:

    ratings.upgrade.thumbs.class.names=com.liferay.message.boards.model.MBDiscussion,com.liferay.message.boards.model.MBMessage


Top of Page

Recent Content Portlet


Configure maximum number of items to display per type in the Recent Content portlet.

Defaults:

    recent.content.max.display.items=5


Top of Page

My Sites Directory


Specify a list of comma delimited site names that are excluded from determining the organizations, user groups, and users that are displayed in My Sites Directory portlet.

Defaults:

    my.sites.directory.site.excludes=


Top of Page

Sites Admin Portlet


Set this to true to allow site members to see the Sites Admin portlet and the sites they are members of in the Control Panel. Setting this to false will only allow administrators to see this portlet in the Control Panel.

Defaults:

    sites.control.panel.members.visible=true


Set this to true to allow site administrators to make a site inherit the content from the scope of its parent site. This option can be checked in the Site Settings section of a site. Sites which inherit the content from their parent site will not have its own scope of content and therefore will not have the Content Category in the Sites Admin portlet. Setting this to false will disable this option for sites that are not already configured to inherit content.

Defaults:

    sites.show.inherit.content.scope.from.parent.site=false


Redirect to this resource if the user requested a site friendly URL that does not exist. Leave it blank to display nothing.

A similar configuration for pages is managed with the property "layout.friendly.url.page.not.found".

Examples:

    sites.friendly.url.page.not.found=/html/portal/404.html


Set this property to 0 to disable the Sharing of Content with subsites for all sites. Set this property to 1 to disable it by default while allowing site administrators to enable it per site. Set this property to 2 to enable it by default while allowing site administrators to disable it per site.

Defaults:

    sites.content.sharing.with.children.enabled=2

Examples:

    sites.content.sharing.with.children.enabled==0
    sites.content.sharing.with.children.enabled==1


Set this property to true to let every site administrator share content across sites he manages.

Defaults:

    sites.content.sharing.through.administrators.enabled=true


Configure email notification settings.

Defaults:

    sites.email.from.name=
    sites.email.from.address=

Defaults:

    sites.email.membership.reply.subject=com/liferay/portlet/sites/dependencies/email_membership_reply_subject.tmpl
    sites.email.membership.reply.body=com/liferay/portlet/sites/dependencies/email_membership_reply_body.tmpl

Defaults:

    sites.email.membership.request.subject=com/liferay/portlet/sites/dependencies/email_membership_request_subject.tmpl
    sites.email.membership.request.body=com/liferay/portlet/sites/dependencies/email_membership_request_body.tmpl


Set the default change frequency for pages. This change frequency value will be used by the robots visiting the pages. Possible values are: always, hourly, daily, weekly, monthly, yearly, or never.

Defaults:

    sites.sitemap.default.change.frequency=daily


Set the default priority for pages. This priority value will used by the robots visiting the pages. The possible value range is 0.0 to 1.0.

Defaults:

    sites.sitemap.default.priority=


Top of Page

Trash


Set this property to false to disable the Recycle Bin for all sites. Set this property to true to enabling while allowing site administrators to disable it per site.

Defaults:

    trash.enabled=true

Examples:

    trash.enabled=false


Set the limit for results used when performing searches in the Recycle Bin.

Defaults:

    trash.search.limit=500


Set the interval in minutes on how often CheckEntryMessageListener will run to check for and delete trash entries that have been in the Recycle Bin longer than the maximum age.

Defaults:

    trash.entry.check.interval=60


Set this to the maximum age (in number of minutes) that an entry will be kept in the Recycle Bin. Note that these settings may be overridden in Portal Settings for each portal server or in Site Settings for each site.

Defaults:

    trash.entries.max.age=43200


Top of Page

Workflow


Configure email notification settings.

Defaults:

    workflow.email.from.name=
    workflow.email.from.address=


Top of Page

ZIP


Sets the encoding used for file names inside ZIP files. See LPS-76719 for more informatino.

Defaults:

    zip.file.name.encoding=UTF-8