2.1.3. Portal extension by examples

Registering your service to portal container

A service (also called component) can be any Java class. At minimum you write an empty interface, and an implementation with a constructor.

public interface MyService {

public class MyServiceImpl implements MyService {

  public MyServiceImpl() throws Exception {

In your custom-extension.war!/WEB-INF/conf/portal/configuration.xml:


Then to access the service:

MyService service = (MyService) PortalContainer.getInstance().getComponentInstanceOfType(MyService.class)

You should learn more about service, initial parameter and plugin and all about service configuration in Service configuration for beginners and Service configuration in details.

Adding a supported language

The service org.exoplatform.services.resources.LocaleConfigService is responsible for adding supported languages. The service is configured to read a list of locales from a file:


So by default it is portal.war!/conf/common/locales-config.xml.

To add a locale you want, include a modified copy of this file in your extension: custom-extension.war!/conf/common/locales-config.xml.

Of course the language support involves translating lots of resources. For now you just add a locale like ve (for Venda), so a user can choose it in the list of language options, but no resource would be found for Venda, then the default language will be used.


Overriding the Login page

The LoginServlet dispatches the login request to login.jsp:

getServletContext().getRequestDispatcher("/login/jsp/login.jsp").include(req, resp);

This login page is firstly defined in portal webapp but then is overridden by platform-extension. In other words, you can find the login page at:

You can override it once again in your portal extension, for example custom-extension.war!/login/jsp/login.jsp.

Overriding shared layout

The shared layout is applied for all pages of a portal. You can override this resouce by including it in your extension custom-extension.war!/WEB-INF/conf/portal/portal/sharedlayout.xml.

Some of customizations you can do with shared layout:

See Customizing a shared layout for more instructions.

Copyright ©. All rights reserved. eXo Platform SAS
blog comments powered byDisqus