Installing Liferay on WebLogic
Liferay DXP 2026.Q1
If you are using WebLogic as your application server, it is highly recommended to install DXP to a WebLogic Managed server. A managed server can start and stop DXP quickly and can be converted to a cluster configuration.
These instructions require the Jakarta-based WebLogic 15.1.1.0+. If you have a prior version of WebLogic, you cannot install Jakarta-based Liferay. See the instructions that pair older versions of Java EE-based Liferay with Java EE-based WebLogic.
Prerequisites
Configure an Admin Server and a Managed Server following WebLogic’s documentation.
Liferay DXP/Portal requires a supported Java version to run. See JVM Configuration for recommended settings.
Download these files from the Customer Portal. Note that there is a special WebLogic version of the WAR file:
- WebLogic version of the DXP WAR file
- OSGi Dependencies ZIP file
Preparing the DXP WAR
-
Unzip the DXP WAR file to an arbitrary location.
-
Create a file called
portal-ext.propertiesin the expanded WAR’sWEB-INF/classesfolder. -
In the
portal-ext.propertiesfile, set theliferay.homeproperty to your Liferay Home folder path. In WebLogic,[Liferay Home]is typically set to the domain’s folder (weblogic/domains), but you can use any local folder. For example,liferay.home=/full/path/to/your/liferay/home/folderImportantThe
liferay.homedirectory must contain the Portal/DXPosgi/directory. -
Package the
portal-ext.propertiesin your DXP WAR file by expanding the DXP WAR file and copying theportal-ext.propertiesfile into theWEB-INF/classesfolder. -
Optionally, you can re-WAR the expanded DXP WAR. When you’re ready to deploy DXP, you can deploy it as an expanded archive or WAR file. In both cases, DXP reads the property settings once it starts up.
If you must update portal-ext.properties after DXP deploys, it is in the current location of the installed Liferay WAR under ROOT/WEB-INF/classes. WebLogic may move the WAR during installation.
Configuring WebLogic’s Node Manager
WebLogic’s Node Manager starts and stops managed servers.
If you’re running WebLogic on a UNIX system other than Solaris or Linux, use the Java Node Manager, instead of the native version of the Node Manager, by configuring these Node Manager properties in the domains/your_domain_name/nodemanager/nodemanager.properties file:
NativeVersionEnabled=false
StartScriptEnabled=true
By default, the Node Manager uses SSL. If you want to disable SSL during development, set SecureListener=false in your nodemanager.properties file.
See Oracle’s Configuring Java Node Manager documentation for details.
Configuring WebLogic’s JVM
Configure the JVM and other options in a setUserOverridesLate WebLogic startup script and in your Managed Server UI.
-
Create a
setUserOverridesLate.shscript in[Your Domain]/bin. -
Add the following settings.
export DERBY_FLAG="false" export JAVA_OPTIONS="${JAVA_OPTIONS} -Dfile.encoding=UTF-8 -Djava.net.preferIPv4Stack=true -Dlog4j2.formatMsgNoLookups=true -Duser.timezone=GMT -da:org.apache.lucene... -da:org.aspectj..." export JAVA_PROPERTIES="-Dfile.encoding=UTF-8 ${JAVA_PROPERTIES} ${CLUSTER_PROPERTIES}" export MW_HOME="[place your WebLogic Server folder path here]" export USER_MEM_ARGS="-Xms2560m -Xmx2560m -XX:MaxNewSize=1536m -XX:MaxMetaspaceSize=768m -XX:MetaspaceSize=768m -XX:NewSize=1536m -XX:SurvivorRatio=7"The
DERBY_FLAGsetting disables the WebLogic’s built-in Derby server—DXP does not require this server.JAVA_OPTIONSsets DXP’s UTF-8 requirement, Lucene usage, and Aspect Oriented Programming via AspectJ.JAVA_PROPERTIESalso sets DXP’s UTF-8 requirement.ImportantDXP requires the application server JVM to use the
GMTtime zone andUTF-8file encoding.Set
MW_HOMEto the folder containing the WebLogic server. For example,export MW_HOME="/home/me/Oracle/Middleware/Oracle_Home"The
*_MEM_ARGSvariables set DXP’s starting and maximum heap memory capacity. -
Set DXP’s memory requirements when starting the Managed Server. In the WebLogic Remote Console, navigate to the Managed Server where DXP is to be deployed and select Advanced → Node Manager. Enter the following parameters into the Arguments field:
-Xms2560m -Xmx2560m -XX:MaxNewSize=1536m -XX:MaxMetaspaceSize=768m -XX:MetaspaceSize=768m -XX:NewSize=1536m -XX:SurvivorRatio=7 -
Click Save.

JVM Options Explained
| Option | Explanation |
|---|---|
-Dfile.encoding=UTF-8 | DXP requires UTF-8 file encoding. |
-Djava.net.preferIPv4Stack=true | Prefers an IPv4 stack over IPv6. |
-Dlog4j2.formatMsgNoLookups=true | Resolves a remote code execution (RCE) vulnerability. See LPS-143663 for details. |
-Duser.timezone=GMT | DXP requires the application server JVM to use the GMT time zone. |
Memory Arguments Explained
| Memory Arguments | Explanation |
|---|---|
-Xms | Initial space for the heap. |
-Xmx | Maximum space for the heap. |
-XX:NewSize | Initial new space. Setting the new size to half of the total heap typically provides better performance than using a smaller new size. |
-XX:MaxNewSize | Maximum new space. |
-XX:MetaspaceSize | Initial space for static content. |
-XX:MaxMetaspaceSize | Maximum space for static content. |
-XX:SurvivorRatio | Ratio of the new space to the survivor space. The survivor space holds young generation objects before being promoted to old generation space. |
After installing DXP, these configurations (including these JVM options) can be further tuned for improved performance. Please see Tuning Liferay and Tuning Your JVM for more information.
Installing Dependencies
DXP depends on OSGi modules (OSGi Dependencies ZIP) and a database driver.
-
Unzip the OSGi Dependencies ZIP file into the
[Liferay Home]/osgifolder (create this folder if it doesn’t exist). Liferay’s OSGi runtime depends on these modules. -
The DXP quarterly release WAR file includes drivers for MariaDB and PostgreSQL. If the WAR doesn’t have the driver for the supported database you’re using, download your database vendor’s JDBC JAR file and place it in the exploded DXP WAR’s
WEB-INF/shielded-container-libfolder.See the compatibility matrix for a list of supported databases.
A Hypersonic database is bundled with DXP and is useful for testing purposes. Do not use HSQL for production instances.
Installing Elasticsearch
When you start Liferay, it installs and starts a default sidecar Elasticsearch server. When installing on WebLogic you should set up a remote Elasticsearch server right from the start. See Getting Started with Elasticsearch.
When Liferay DXP is configured (using .config files for the Elasticsearch connector) and started with Elasticsearch already configured and running, the connection to Elasticsearch is activated.
Connect to Database
DXP contains a built-in Hypersonic database for demonstration purposes, but it should not be used in production. Use a full-featured, supported database. See Configure a Database to set up your database.
Liferay DXP can connect to your database using DXP’s built-in data source (recommended) or a JNDI data source on your app server.
You can configure DXP’s built-in data source with your database the first time you run DXP by using the Setup Wizard. Or you can configure the data source in a portal-ext.properties file based on the Database Template for your database.
Otherwise, you can configure the data source in WebLogic.
-
Get the JDBC JAR from your DXP WAR (7.4+) or from the database vendor and copy it to the domain’s
libfolder. -
Log into the WebLogic Remote Console.
-
In the Services tree, click Data Sources.
-
To create a new data source, click New.
-
Enter the Name field with
Liferay Data Sourceand the JNDI Name field withjdbc/LiferayPool. -
Select the database type and driver. For example, PostgreSQL is
PostgreSQL's Driver (Type 4) Versions:Any. -
Fill in the information for the database (name, host name, port, user name, and password).
-
Click Create at the top of the form.
-
Connect DXP to the JDBC data source. In the
portal-ext.propertiesfile (see above), enter the data source JNDI name. For example,jdbc.default.jndi.name=jdbc/LiferayPool
Connect to Mail Server
You can connect Liferay DXP to a mail server using its built-in mail session. Otherwise, you can use WebLogic’s mail session:
-
Start WebLogic and log into WebLogic Remote Console.
-
Select Edit Tree → Services → Mail Sessions.
-
Click New to begin creating a new mail session.
-
Name the session LiferayMail and give it the JNDI name
mail/MailSession. -
Click Create.
-
Enter the Session Username, Session Password, Confirm Session Password, and JavaMail Properties fields as necessary for the mail server. See the WebLogic documentation for more information on these fields.
-
Click Save.
-
Shut down the Managed and Admin Servers.
-
With the Managed and Admin servers shut down, add the following property to the
portal-ext.propertiesfile in Liferay Home:mail.session.jndi.name=mail/MailSession
After DXP is deployed, the portal-ext.properties file can be found in the domain’s autodeploy/ROOT/WEB-INF/classes folder.
The changes take effect upon restarting the Managed and Admin servers.
Deploying DXP
-
Verify that the designated Managed Server where you’re deploying DXP is shut down.
-
In the WebLogic Remote Console, select Deployments → App Deployments from the Edit Tree.
-
Click New to start a new deployment.
-
In Name, type
Liferay. -
In Targets, move the server you’re installing Liferay on to the Chosen box.
-
To use the exploded WAR, de-select Upload and then type the full path to the exploded WAR in Source Path.
-
To use the WAR file, leave Upload turned on and select the DXP WAR file from the machine.
-
Click Create.
-
After the deployment finishes, click Save if the configuration is correct.
-
Start the Managed Server where you deployed DXP. DXP precompiles all the JSPs and then launches.
After deploying DXP, you may see excessive warnings and log messages such as the ones below, involving PhaseOptimizer. These are benign and can be ignored. You can turn off these messages by adjusting the app server’s logging level or log filters.
May 02, 2018 9:12:27 PM com.google.javascript.jscomp.PhaseOptimizer$NamedPass process
WARNING: Skipping pass gatherExternProperties
May 02, 2018 9:12:27 PM com.google.javascript.jscomp.PhaseOptimizer$NamedPass process
WARNING: Skipping pass checkControlFlow
May 02, 2018 9:12:27 PM com.google.javascript.jscomp.PhaseOptimizer$NamedPass process
INFO: pass supports: [ES3 keywords as identifiers, getters, reserved words as properties, setters, string continuation, trailing comma, array pattern rest, arrow function, binary literal, block-scoped function declaration, class, computed property, const declaration, default parameter, destructuring, extended object literal, for-of loop, generator, let declaration, member declaration, new.target, octal literal, RegExp flag 'u', RegExp flag 'y', rest parameter, spread expression, super, template literal, modules, exponent operator (**), async function, trailing comma in param list]
current AST contains: [ES3 keywords as identifiers, getters, reserved words as properties, setters, string continuation, trailing comma, array pattern rest, arrow function, binary literal, block-scoped function declaration, class, computed property, const declaration, default parameter, destructuring, extended object literal, for-of loop, generator, let declaration, member declaration, new.target, octal literal, RegExp flag 'u', RegExp flag 'y', rest parameter, spread expression, super, template literal, exponent operator (**), async function, trailing comma in param list, object literals with spread, object pattern rest]
If you have a Liferay DXP Enterprise subscription, DXP requests your activation key. See Activating Liferay DXP for more information.
Congratulations! You’re running DXP on WebLogic.