This chapter describes about configurations used in eXo Collaboration. It consists of three main sections:

This table shows some main components that take init-param in the applications of eXo Collaboration:

Applications Components Description
Calendar CalendarServiceImpl It is a service that manages calendars in the Calendar application of eXo Collaboration.
Chat

HistoryImpl

XMPPMessenger

DefaultPresenceStatus

It is a service that saves the chat history of users.

It is a service that processes messages of chat users, basing on the XMPP Protocol.

It is a component that controls the presence status of chat users.

Contact ContactServiceImpl It is a service that supplies functions to manage contacts in the Address Book application of eXo Collaboration.
Webservice AddActionsPlugin It is used to register a listener for the actions on the nodes.

The following table describes the main functions of external component plugins:

Applications Components Description
Calendar NewUserListener Create default personal calendars.
NewGroupListener Create default group calendars.
NewMembershipListener Share calendars to members of a specific group.
ReminderPeriodJob Execute sending reminder emails to users.
PopupReminderPeriodJob Open a pop-up reminder on the browser of users.
AddActionsPlugin Enable the systems to automatically update the updated date of events/tasks in a calendar when contents of these events/tasks are changed.
Chat HistoryPeriodJob Save the chat history of users.
RequestFilterComponentPlugin Delete the session of a user when the browser is suddenly closed or the session is changed.
AuthenticationLoginListener Start the session and log in the chat server.
AuthenticationLogoutListener End the session and log out the chat server.
Contact NewUserListener Create personal contact data for users.
NewMembershipListener Create address book for a specific group.
UpdateUserProfileListener Update the personal profile of a user when it is changed on the portal.
Content RSSContentPlugin The formatter used to analyze the data from a RSS resource.
DescriptionPlugin Represent the data from a RSS resource.
Mail AuthenticationLogoutListener Stop checking mails of a user when he logs out.
Social Intergration CalendarDataInitialize Create a calendar for a group in a specific space.
ContactDataInitialize Create an address book for a group in a specific space.
ContactSpaceActivityPublisher Customize the activity status of a specific space when an event happens on an address book.
CalendarSpaceActivityPublisher Customize the activity status of a specific space when an event happens on a calendar.
PortletPreferenceRequiredPlugin Declare the application that will automatically create database.

Each user can have a default personal calendar created. Use the NewUserListener to configure that. To use the plugin in the component configuration, you must use the target-component:

The configuration is applied mainly in extension/webapp/src/main/webapp/WEB-INF/cs-extension/cs/calendar/calendar-service-configuration.xml.


 
<component-plugin>
  <name>calendar.new.user.event.listener</name>
  <set-method>addListenerPlugin</set-method>
  <type>org.exoplatform.calendar.service.impl.NewUserListener</type>
  <description>description</description>
  <init-params>
    <value-param>
      <name>defaultEventCategories</name>
      <value>Meeting,Calls,Clients,Holiday,Anniversary</value>
    </value-param>
    <value-param>
      <name>defaultCalendarCategory</name>
      <value>My group</value><!-- Single value -->
    </value-param>
    <value-param>
      <name>defaultCalendar</name>
      <value>Default</value>
    </value-param>
    <!--Params for default calendar setting -->
    <value-param>
      <name>viewType</name>
      <value>1</value>
    </value-param>

    <value-param>
      <name>timeInterval</name>
      <value>15</value><!-- in minutes -->
    </value-param>

    <value-param>
      <name>weekStartOn</name>
      <value>2</value>
    </value-param>

    <value-param>
      <name>dateFormat</name>
      <value>MM/dd/yyyy</value>
    </value-param>

    <value-param>
      <name>timeFormat</name>
      <value>HH:mm</value> <!-- HH:mm/hh:mm a -->
    </value-param>

    <value-param>
      <name>localeId</name>
      <value>BEL</value>
    </value-param>

    <value-param>
      <name>timezoneId</name>
      <value>Europe/Brussels</value>
    </value-param>

    <value-param>
      <name>baseUrlForRss</name>
      <value/>
    </value-param>

    <value-param>
      <name>isShowWorkingTime</name>
      <value>false</value><!-- boolean true/false -->
    </value-param>

    <value-param>
      <name>workingTimeBegin</name>
      <value>08:00</value><!-- -->
    </value-param>

    <value-param>
      <name>workingTimeEnd</name>
      <value>18:00</value><!-- -->
    </value-param>

    <values-param>
      <name>ignoredUsers</name>
      <description>Definition users to ignore create default calendar</description>
      <!-- <value>demo</value> <value>marry</value> -->
    </values-param>
  </init-params>
</component-plugin>   

Details:

See the details about the init-params of the component in the following table:

Value-paramsPossible valueDefault valueDescription
defaultEventCategories String (Comma separated list of category names) Meeting,Calls,Clients,Holiday,Anniversary Default event categories for users.
defaultCalendarCategory String Default Name of the calendar group.
viewType 0-6 (see below) 1 Default view after user logs in and goes to the Calendar portlet.
timeInterval integer in minutes 15 The time unit interval when you drag and move the event (in Day and Week views only).
weekStartOn 1-7 (see below) 2 Day to use as the beginning of the week. It only affects the Week view.
dateFormat valid Java Date format MM/dd/yyyy The display format for dates.
timeFormat valid Java Date format HH:mm The display format for time.
localeId valid locale ID BEL Id of the geographic locale.
timezoneIds valid TimeZone id Europe User time zone.
baseUrlForRss none none The URL to publish the RSS content.
isShowWorkingTime true/false false Indicate if the working time should be highlighted in the Day view.
workingTimeBegin time in timeFormat 08:00 The start time in working time.
workingTimeEnd time in timeFormat 18:00 The end time in working time.
ignoredUsers user id, use multiple by each line demo/marry Definition users to ignore creating the default calendar.

The viewType parameter is encoded by a number as follow:

0 : Day view

1 : Week view

2 : Month view

3 : Year view

4 : List view

5 : Schedule view

6 : Working days view

The weekStartOn parameter is encoded as follow:

1 : Sunday

2 : Monday

3 : Tuesday

4 : Wednesday

5 : Thursday

6 : Friday

7 : Saturday

To use the plugin in the component configuration, you must use the target-component:

The configuration is applied mainly in extension/webapp/src/main/webapp/WEB-INF/cs-extension/cs/calendar/calendar-service-configuration.xml.

Details:

See the details about the init-params of the component in the following table:

Value-paramsPossible valuesDefault valuesDescription
defaultEditPermission User id (Multi value membership, use coma (,) to split values) . means that all members in that group can modify and add, remove a calendar, events/tasks of the calendar The default permission assigned to membership in a specific group to edit calendars and events/tasks of the calendar.
defaultViewPermission User id (Multi value membership, use coma (,) to split values) . means that all members in that group can view this calendar and all the events/tasks of this calendar. The default permission assigned to membership in a specific group to view a calendar and events /tasks of the calendar.
defaultLocale Valid locade id BEL (see more locale ids http://userpage.chemie.fu-berlin.de/diverse/doc/ISO_3166.html ) The default locale of the calendar.
defaultTimeZone Valid timezone id Europe/Brussels (see more for timeZone ids http://www.unicode.org/cldr/data/docs/design/formatting/zone_log.html#windows_ids) The default time zone of the calendar.
ignoredGroups Group id (use line to define multiple value) /platform/guests Definition group to ignore create the default calendar.

The Calendar application of eXo Collaboration can send event reminders by using the email reminder plugin configuration. You will probably need to adjust this configuration to meet your own needs. The feature is based on a periodic poll of the stored reminders.

You must use the following target component to use the plugin in this configuration:

The configuration is applied in extension/webapp/src/main/webapp/WEB-INF/cs-extension/cs/cs-configuration.xml.

Details:

See details about the init-params of the component in the following table:

Properties-param Description Property names Description Possible values Default values
job.info Save the monitor data periodically. jobName The name of job String ReminderJob
groupName The name of group job. String CollaborationSuite
job The name of actual job class. Class path org.exoplatform.calendar.service.ReminderJob
repeatCount How many times to run this job. Long 0, ( use '0' which means 'run forever)
period The time interval (millisecond) between job executions. Long 180000
startTime The time when the job starts running. Integer +0
endTime The time when the job ends running. Integer none

You must use the following target component to use the plugin in this configuration:

The configuration is applied in extension/webapp/src/main/webapp/WEB-INF/cs-extension/cs/cs-configuration.xml.

Details:

See details about the init-params of the component in the following table:

Properties-paramDescriptionProperty namesDescriptionPossible valuesDefault values
job.info Save the monitor data periodically. jobName The name of job. String PopupReminderJob
groupName The name of group job. String CollaborationSuite
job The name of actual job class. Class path org.exoplatform.calendar.service.PopupReminderJob
repeatCount How many times to run this job. Long 0, ( use '0' which means 'run forever)
period The time interval (millisecond) between job executions. Long 6000
startTime The time when the job starts running. Long +0
endTime The time when the job ends running. Integer None
popupreminder.info Save the monitor data periodically. portalName The name of the portal. String portal

The configuration of the AddActionsPlugin is found in WEB-INF/cs-extension/cs/webservice/webservice-configuration.xml.

It is used to register the listener named org.exoplatform.webservice.cs.LastUpdateAction and it is executed, basing on eventTypes.



<component>
  <type>org.exoplatform.services.jcr.impl.ext.action.SessionActionCatalog</type>
  <component-plugins>
    <component-plugin>
      <name>Last Update Action</name>
      <set-method>addPlugin</set-method>
      <type>org.exoplatform.services.jcr.impl.ext.action.AddActionsPlugin</type>
      <description>add actions plugin</description>
      <init-params>
        <object-param>
          <name>actions</name>
          <object type="org.exoplatform.services.jcr.impl.ext.action.AddActionsPlugin$ActionsConfig">
            <field name="actions">
              <collection type="java.util.ArrayList">
                <value>
                  <object type="org.exoplatform.services.jcr.impl.ext.action.ActionConfiguration">
                    <field name="eventTypes">
                      <string>addNode,changeProperty</string>
                    </field>
                    <field name="nodeTypes">
                      <string>exo:calendarEvent</string>
                    </field>
                    <field name="actionClassName">
                      <string>org.exoplatform.webservice.cs.LastUpdateAction</string>
                    </field>
                  </object>
                </value>
              </collection>
            </field>
          </object>
        </object-param>
      </init-params>
    </component-plugin>
  </component-plugins>
</component>
Field nameStringDescription
eventTypes addNode,changeProperty The type of the event.
nodeTypes exo:calendarEvent The type of the node.
actionClassName org.exoplatform.webservice.cs.LastUpdateAction The registration class to execute the actions that the plugin requires.

The Chat Configuration is applied in /extension/webapp/src/main/webapp/WEB-INF/cs-extension/cs/chat/chat-service-configuration.xml.

Details:

See details about the init-params of the component in the following table:

Properties-param Description Property names Description Possible values Default values
job.info Save the monitor data periodically. jobName The name of job. String messageToHistoricalMessageJob
groupName The name of group name. String CollaborationSuite
job The name of actual job class. Class path org.exoplatform.services.xmpp.connection.impl.HistoryJob
repeatCount How many times to run this job. integer 0 ( use '0' which means 'run forever)
period The time interval (millisecond) between job executions. Long 3000
startTime The time the job starts running. Long +0
endTime The time the job ends running. Long none
history.info Save the monitor data periodically. logBatchSize The maximum number of messages in the cache are saved once the job runs. Integer 50

Two functions, including login and logout of XMPPRestService, are responsible for creating a new XMPPSessionImpl and destroying an existing XMPPSessionImpl. They can be called by listeners: AuthenticationLoginListener, AuthenticationLogoutListener or from client(browser) through the REST protocol (jabberLogin, jabberLogout in UIMainChatWindow.js). You must use the same target component for two external component plugins:

The Contact Application is configured by three external component plugins: NewUserListener, NewMembershipListener and UpdateUserProfileListener. They use the same target component:

The Contact configuration is found in extension/webapp/src/main/webapp/WEB-INF/cs-extension/cs/contact/contact-service-configuration.xml.

The Content application, such as RSS reader of eXo Collaboration, is configured by two external component plugins: RSSContentPlugin and DescriptionPlugin. Both the external components plugins use the same target component:

This content configuration is applied in extension/webapp/src/main/webapp/WEB-INF/cs-extension/cs/content/content-service-configuration.xml.

In the Mail application of eXo Collaboration, when a user checks messages for one account, the remote mailbox fetch is performed as a background job. Before eXo Collaboration 1.2, the job was continued until all messages had been retrieved or when the user stopped the check through the UI. Hence, even when a user was not logged in, the background job was continued. This can be the resource intensive for the server if many users have large mailboxes. Since eXo Collaboration 1.2, one capability is added to halt the background job when the user session terminates (logout or timeout). It makes eXo Collaboration more friendly with server resources. If you want to activate this feature, you need to add a bunch of the xml congifuration in /extension/webapp/src/main/webapp/WEB-INF/cs-extension/cs/mail/mail-service-configuration.xml:

Details:

Since eXo Collaboration 2.2.0, MailSettingConfigPlugin is used to define the behavior, for example, showing/hiding fields and checking/unchecking checkboxes, of email account settings in the mail-server-configuration.xml file. It allows administrators to preconfigure all settings and to specify if end-users have the modification right on each specific setting or not.



<external-component-plugins>
  <target-component>org.exoplatform.mail.service.MailService</target-component>
    <component-plugin>   
        <name>cs.mail.service.settings</name>
        <set-method>addPlugin</set-method>
        <type>org.exoplatform.mail.service.MailSettingConfigPlugin</type>
        <description>description</description>
            <init-params>
                <object-param>
                    <name>leaveOnServer</name>
                <description>options to keep a copy of the message on the mail server after eXo Mail has downloaded the message</description>
                <object type="org.exoplatform.mail.service.MailSettingConfig">
                    <field name="name"><string>leaveOnServer</string></field>
                    <field name="userAllowed"><boolean>true</boolean></field>
                    <field name="defaultValue"><string>true</string></field>
                </object>
                </object-param>
                <object-param>
                    <name>incomingServer</name>
                <description>default incoming server to check for new mails.</description>
                <object type="org.exoplatform.mail.service.MailSettingConfig">
                    <field name="name"><string>incomingServer</string></field>
                    <field name="userAllowed"><boolean>true</boolean></field>
                    <field name="defaultValue"><string>imap.gmail.com</string></field>
                </object>
                </object-param>
                <object-param>
                    <name>incomingPort</name>
                <description>default port incoming server to check for new mails.</description>
                <object type="org.exoplatform.mail.service.MailSettingConfig">
                    <field name="name"><string>incomingPort</string></field>
                    <field name="userAllowed"><boolean>true</boolean></field>
                    <field name="defaultValue"><string>993</string></field>
                </object>
                </object-param>
                <object-param>
                    <name>outgoingServer</name>
                <description>description</description>
                <object type="org.exoplatform.mail.service.MailSettingConfig">
                    <field name="name"><string>outgoingServer</string></field>
                    <field name="userAllowed"><boolean>true</boolean></field>
                    <field name="defaultValue"><string>smtp.gmail.com</string></field>
                </object>
                </object-param>
                <object-param>
                    <name>outgoingPort</name>
                <description>description</description>
                <object type="org.exoplatform.mail.service.MailSettingConfig">
                    <field name="name"><string>outgoingPort</string></field>
                    <field name="userAllowed"><boolean>true</boolean></field>
                    <field name="defaultValue"><string>465</string></field>
                </object>
                </object-param>
                <object-param>
                    <name>acceptIncomingSecureAuthentication</name>
                <description>description</description>
                <object type="org.exoplatform.mail.service.MailSettingConfig">
                    <field name="name"><string>acceptIncomingSecureAuthentication</string></field>
                    <field name="userAllowed"><boolean>true</boolean></field>
                    <field name="defaultValue"><string>true</string></field>
                </object>
                </object-param>
                <object-param>
                    <name>incomingSecureAuthentication</name>
                <description>description</description>
                <object type="org.exoplatform.mail.service.MailSettingConfig">
                    <field name="name"><string>incomingSecureAuthentication</string></field>
                    <field name="userAllowed"><boolean>true</boolean></field>
                    <field name="defaultValue"><string>starttls</string></field>
                </object>
                </object-param>
                <object-param>
                    <name>incomingAuthenticationMechanism</name>
                <description>description</description>
                <object type="org.exoplatform.mail.service.MailSettingConfig">
                    <field name="name"><string>incomingAuthenticationMechanism</string></field>
                    <field name="userAllowed"><boolean>true</boolean></field>
                    <field name="defaultValue"><string>plain</string></field>
                </object>
                </object-param>
                <object-param>
                    <name>acceptOutgoingSecureAuthentication</name>
                <description>description</description>
                <object type="org.exoplatform.mail.service.MailSettingConfig">
                    <field name="name"><string>acceptOutgoingSecureAuthentication</string></field>
                    <field name="userAllowed"><boolean>true</boolean></field>
                    <field name="defaultValue"><string>true</string></field>
                </object>
                </object-param>
                <object-param>
                    <name>outgoingSecureAuthentication</name>
                <description>description</description>
                <object type="org.exoplatform.mail.service.MailSettingConfig">
                    <field name="name"><string>outgoingSecureAuthentication</string></field>
                    <field name="userAllowed"><boolean>true</boolean></field>
                    <field name="defaultValue"><string>starttls</string></field>
                </object>
                </object-param>
                <object-param>
                    <name>outgoingAuthenticationMechanism</name>
                <description>description</description>
                <object type="org.exoplatform.mail.service.MailSettingConfig">
                    <field name="name"><string>outgoingAuthenticationMechanism</string></field>
                    <field name="userAllowed"><boolean>true</boolean></field>
                    <field name="defaultValue"><string>plain</string></field>
                </object>
                </object-param>
            </init-params>
    </component-plugin>      
  </external-component-plugins>

Details:

Object-paramDesciption
leaveOnServerOptions to keep the message on the mail server after it has been downloaded to the Mail application of eXo Collaboration.
incomingServerThe default incoming server used to check new mails.
incomingPortThe default port of the incoming server used to check new mails.
outgoingServerThe default port of the outgoing server used to send new mails.
outgoingPortThe default outgoing port to send new mails.
acceptIncomingSecureAuthenticationAccept the secure authentication of the incoming server.
incomingSecureAuthenticationThe type of incoming secure authentication.
incomingAuthenticationMechanismThe type of incoming authentication mechanism.
acceptOutgoingSecureAuthenticationAccepts the secure authentication of the outgoing server.
outgoingSecureAuthenticationThe type of outgoing secure authentication.
outgoingAuthenticationMechanismThe type of incoming authentication mechanism.

The object parameters have the same field names, but the values of the parameters are different.

Field namesDescriptionPossible values
nameThe field name in the account settings form.String
userAllowedAllow users to edit the field in the account settings form or not.Boolean
defaultValueThe default value of the field in the account settings form. String

The Social Integration Configuration is applied in /extension/webapp/src/main/webapp/WEB-INF/cs-extension/cs/social-integration/social-integration-configuration.xml.

Data injectors are used to create data for performance test. This part will describe which data injectors are implemented in eXo Collaboration and how to use them.

In eXo Collaboration, data injectors are implemented as plug-ins attached to the org.exoplatform.services.bench.DataInjectorService service and handled via RESTful requests. This service is normally registered to the portal container as a general component.

To use this service, add the following dependency to the Classpath of the server:

To activate the DataInjectorService component, you need to register it to a portal container by the following configuration:

When you want to inject data for a specific product, you must implement a class which extends "org.exoplatform.services.bench.DataInjector" and register it to the DataInjectorService component as a plug-in.

In eXo Collaboration, there are three plug-ins attached to the DataInjectorService component:

The ContactDataInjector plug-in is used to manage data injection of the Address Book application.

To use this plug-in, do as follows:

1. Add the following configuration to the configuration.xml file to register the plug-in to the DataInjectorService component:

In which:

Parameters Possible Values Default Values Description
mA number 5 The maximum number of address books of the Address Book application in each injection.
mC number 5 The maximum number of contacts of an address book in each injection.

2. Execute the injector by the RESTful request as follows:

In which:

The CalendarDataInjector plug-in is used to manage data injection in the Calendar application.

To use this plug-in, do as follows:

1. Add the following configuration to the configuration.xml file to register the plug-in to the DataInjectorService component:



<external-component-plugins>
    <target-component>org.exoplatform.services.bench.DataInjectorService</target-component>
    <component-plugin>
      <name>CalendarDataInjector</name>
      <set-method>addInjector</set-method>
      <type>org.exoplatform.calendar.bench.CalendarDataInjector</type>
      <description>inject data for Calendar</description>
      <init-params>
        <value-param>
          <name>mCt</name> <!-- maximum number of categories -->
          <value>5</value>
        </value-param>
        <value-param>
          <name>mEcat</name> <!-- maximum number of event categories -->
          <value>10</value>
        </value-param>
        <value-param>
          <name>mCal</name> <!-- maximum number of calendars -->
          <value>10</value>
        </value-param>
        <value-param>
          <name>mEv</name> <!-- maximum number of events -->
          <value>5</value>
        </value-param>
        <value-param>
          <name>mTa</name> <!-- maximum number of tasks -->
          <value>5</value>
        </value-param>
        <value-param>
          <name>typeOfInject</name> <!-- type of inject -->
          <value>all</value> <!-- string all/public/private -->
        </value-param>
      </init-params>
    </component-plugin>
</external-component-plugins>

In which:

Parameters Possible Values Default Values Description
mCt number 5 The maximum number of categories in each injection.
mEcat number 10 The maximum number of event categories in each injection.
mCal number 10The maximum number of calendars in each injection.
mEv number 5 The maximum number of events in one calendar in each injection.
mTa number 5 The maximum number of tasks in one calendar in each injection.
typeOfInject String all The type of injection, including "public", "private" and "all". If the type is set as "public", only public calendars are created. If the type is set as "private", only personal calendars are create. If the type is set as "all", both the public and private ones are created.

2. Execute the injector by the RESTful request as follows.

The MailDataInjector is used to manage data injection in the Mail application.

Because of the quite complicated architecture of the Mail application in eXo Collaboration, the injector uses a simple mail server (a mock server) to simulate the way a mail server works. This will create real mail data without mocking effort from the injector and create a reliable testing environment.

To use the injector, do as follows:

1. Add the Greenmail library to the classpath of the web server (in tomcat, copy it to the lib folder). The library is Greenmail 1.3.1b but including some bug fixes which are not updated in the counterpart version of Icegreen. (To have the library, contact eXo Support team).

2. Initialize this component as a service of GateIn, then it will be invoked by MailDataInjector.

3. Register MailDataInjector to DataInjectorService by the following configuration:

In which:

Params Values Description
users String The list of users separated by commas.
accounts StringThe number of accounts injected by the data injector. This value consists of two parts separated by commas: the first is the number of accounts of an user, the second is the prefix of the account Id.
inPro String The incoming protocol. The possible values are: POP3 and IMAP.
check Boolean Specify if checking mails after the data are created on the mail server or not. If the value is true, the injector will execute checking new message tasks sequentially. This task can take some time if the data are large.
msgs Number The number of messages will be available in each account.
attSize Number The size of an attachment. If it does not exist or is equal to 0, no file is attached to the mail message.

This link will request for removing 2 accounts of "root" of which Id starts with "account".

The Chat service of eXo Collaboration is a Jabber engine powered by Openfire. eXo Platform will delegate the actual Jabber protocol communication to Openfire.

You have the full latitude to configure Openfire. There are two possible ways to do it:

  • The openfire.xml file in $openfire_home/conf/.

The eXo Collaboration bundle comes with a pre-configured Openfire server. It is bundled with some eXo plugins and configurations that allow connectivity with eXo Platform. The key properties for integration are:

eXo Platform provides implementations for these 3 interfaces with ExoAuthProvider, ExoUserProvider, ExoGroupProvider. These implementations are based on the eXo REST framework and let you configure the endpoints within the openfire.xml file with additional properties:

Property Default value Description
eXo.env.serverBaseURL http://localhost:8080/## The base URL of the server.
eXo.env.restContextName rest The context name of REST Web application.
provider.authorizedUser.name root The username to authenticate to access the HTTP REST service.
provider.authorizedUser.password gtn The password matching with provider.authorizeduser.name.
exoAuthProvider.authenticationURL /organization/authenticate/ The URL to authenticate users.
exoAuthProvider.authenticationMethod POST The HTTP method used for the authentication method.
exoUserProvider.findUsersURL /organization/xml/user/find-all/ The URL to find all users.
exoUserProvider.findUsersMethod GET The HTTP method used to find all users in the system.
exoUserProvider.getUsersURL /organization/xml/user/view-range/ The URL to retrieve a range of users.
exoUserProvider.getUsersMethod GET The HTTP method used for user/view-range.
exoUserProvider.usersCountURL /organization/xml/user/count The URL to count the number of users.
exoUserProvider.usersCountMethod GET The HTTP method used to count the number of users.
exoUserProvider.userInfoURL /organization/xml/user/info/ The URL to get the information of users.
exoUserProvider.userInfoMethod GET The HTTP method used to get the information of users.
exoGroupProvider.groupInfoURL /organization/xml/group/info/ The URL to get the information of a group of users.
exoGroupProvider.groupInfoMethod GET The HTTP method used to get the information of a group of users.
exoGroupProvider.getGroupsAllURL /organization/xml/group/view-all/ The URL to view a list of all user groups.
exoGroupProvider.getGroupsAllMethod GET The HTTP method used to view a list of all user groups.
exoGroupProvider.getGroupsRangeURL /organization/xml/group/view-from-to/ The URL to list groups in a specific range.
exoGroupProvider.getGroupsRangeMethod GET The HTTP method used to list groups in a specific range.
exoGroupProvider.getGroupsForUserURL /organization/xml/group/groups-for-user/ The URL to list groups to which a user belongs.
exoGroupProvider.getGroupsForUserMethod GET The HTTP method used to list groups to which a user belongs.
exoGroupProvider.groupsCountURL /organization/xml/group/count The URL to count the number of groups.
exoGroupProvider.groupsCountMethod GET The HTTP method used to count the number of groups.

As you can see, the default settings will only work if eXo Platform is deployed on the same host as Openfire, on the port 8080.

Openfire makes use of several ports for communication.

Interface Port Type Description
All addresses 5222 Client to Server The standard port for clients is to connect to the server. Connection may or may not be encrypted. You can update the security settings for this port.
All addresses 9090 & 9091 Admin Console The ports used for the unsecured and secured Openfire Admin Console accesses respectively.
All addresses 7777 File Transfer Proxy The port used for the proxy service that allows files to be transferred between two entities on the XMPP network.
All addresses 3478 & 3479 STUN Service The port used for the service that ensures connectivity between entities behind a NAT.

You can view the table above in http://hostname:9090/index.jsp after you have logged into the Openfire's web console and also customize those ports by yourself.