A supported use case for using Ext Plugins in Liferay DXP is adding additional
functionality to its web.xml
file. Before beginning, make sure you’ve reviewed
the generalized
Customization with Ext Plugins
section.
As an example, you’ll create a sample Ext plugin that adds to your Liferay DXP’s
existing web.xml
file (e.g., in the /tomcat-[version]/webapps/ROOT/WEB-INF
folder). You’ll add a new printout in the console during startup.
-
Navigate to your Liferay Workspace’s root folder and run the following command:
blade create -t war-core-ext add-printout
Your Ext plugin is generated and now resides in the workspace’s
/ext
folder with the name you assigned. -
For your Liferay DXP installation to recognize new functionality in the
web.xml
, you must create a class that implements the ServletContextListener interface. This class will initialize a servlet context event for which you’ll add your new functionality. In theextImpl/java
folder, create the folder structure representing the package name you want your new class to reside in (e.g.,com/liferay/portal/servlet/context
). Then create your new Java class:package com.liferay.portal.servlet.context; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class ExtAddEntryWebXmlPortalContextLoaderListener implements ServletContextListener { public void contextDestroyed(ServletContextEvent servletContextEvent) { } public void contextInitialized(ServletContextEvent servletContextEvent) { System.out.println("EXT_ADD_ENTRY_WEBXML_INSTALLED_SUCCESSFULLY"); } }
The above class includes two methods that initialize and destroy your servlet context event. Be sure to add the new
web.xml
’s functionality when the portal context is initializing. To add a printout verifying the Ext plugins installation, a simple print statement was defined in thecontextInitialized(...)
method:System.out.println("EXT_ADD_ENTRY_WEBXML_INSTALLED_SUCCESSFULLY");
-
Now that you’ve defined a servlet context event, you should add a listener to your
web.xml
that listens for it. In theext-web/docroot/WEB-INF
folder, open theweb.xml
file, which was generated for you by default. -
Add the following
tag between the tags: <listener> <listener-class>com.liferay.portal.servlet.context.ExtAddEntryWebXmlPortalContextLoaderListener</listener-class> </listener>
Excellent! Now when your Ext plugin is deployed, your Liferay DXP installation
will create a ServletContextListener
instance, which will initialize a custom
servlet context event. This event will be recognized by the web.xml
file,
which will add the new functionality to your Liferay DXP installation. Follow the
instructions in the
Deploy the Plugin
article for help deploying the Ext plugin to your server.