When a WSO2 product starts, it starts all components, features and related artifacts bundled with it. Multi-profile support allows you to run the product on a selected profile so that only the features specific to that profile along with common features start up with the server.
Starting a product on a preferred profile only blocks/allows the relevant OSGI bundles. As a result, even if you start the server on a profile such as the api-store
for example, you can still access the API Publisher web application.
OSGI Bundle
OSGI bundle is a tightly coupled, dynamically loadable collection of classes, jars, and configuration files that explicitly declare their external dependencies (if any). In OSGi, a bundle is the primary deployment format. Bundles are applications that are packaged in JARs, and can be installed, started, stopped, updated, and removed.
API-M Profiles
The following are the different profiles available in WSO2 API Manager.
Profile | Command Option with Profile Name | Description |
---|---|---|
Gateway worker | -Dprofile=gateway-worker | Only starts the components related to the API Gateway. You use this when the API Gateway acts as a worker node in a cluster. This profile starts the backend features for data processing and communicating with the manager node. |
Key Manager | -Dprofile=api-key-manager | Only starts the features relevant to the Key Manager component of the API Manager. |
Traffic Manager | -Dprofile=traffic-manager | Only starts the features relevant to the Traffic Manager component of the API Manager. The Traffic Manager helps users to regulate API traffic, make APIs and applications available to consumers at different service levels, and secure APIs against security attacks. The Traffic Manager features a dynamic throttling engine to process throttling policies in real-time, including rate limiting of API requests. |
API Publisher | -Dprofile=api-publisher | Only starts the front end/backend features relevant to the API Publisher. |
Developer Portal (API Store) | -Dprofile=api-store | Only starts the front end/backend features relevant to the Developer Portal (API Store). |
Starting an API-M profile
You can start an API Manager profile in the following methods, based on your requirement
It is recommended to start the components in the following order: Key Manager, Publisher, Store, Traffic Manager, and Gateway.
Method 1- Optimizing before starting the server
Create an optimized distribution for a particular API-M profile.
Run the
<PRODUCT_HOME>/bin/profileSetup.sh
script or<PRODUCT_HOME>/bin/profileSetup.bat
script based on your operating system, with the profile flag.Start the server with the specified profile. A sample command is shown below.
The pack in place is updated after the initial optimization, and the product pack would have fetched irrelevant files for this profile. The
--optimize
option is used to optimize the pack again.Configuration optimization is one of the steps in profile optimization process. This replaces the
deployment.toml
file with a pre-configured profile-specific TOML file that exists in the pack. If required, you can skip this step from the profile optimization process via passing the additional--skipConfigOptimization
option. This prevents the existingdeployment.toml
file in the pack from being overridden.
Method 2 - Optimizing while starting the server
Start the server using the script based on your operating system, using the command given below.
Note that registry indexing for the Traffic Manager and Gateway worker profiles are disabled when you run the profile optimization. To enable registry indexing, open the <PRODUCT_HOME>/repository/conf/registry.xml
file. Set the value of the <startIndexing>
parameter in the <indexingConfiguration>
section to true as shown below.
<indexingConfiguration> <startIndexing>true</startIndexing> . . . </indexingConfiguration>
How multi-profiling works
Starting a product on a preferred profile starts only a subset of features bundled in the product. In order to identify what feature bundles apply to which profile, each product maintains a set of bundles.info
files in the <PRODUCT_HOME>/repository/components/<profile-name>/configuration/org.eclipse.equinox.simpleconfigurator
directories. The bundles.info
files contain references to the actual bundles. Note that <profile-name>
in the directory path refers to the name of the profile. For example, when there's a product profile named webapp, references to all the feature bundles required for webapp profile to function are in a bundles.info
file saved in the <PRODUCT_HOME>/repository/components/webapp/configuration/org.eclipse.equinox.simpleconfigurator
directory.
Note that when you start the server without using a preferred profile, the server refers to the <PRODUCT_HOME>/repository/components/default/configuration/org.eclipse.equinox.simpleconfigurator/bundles.info
file by default. This file contains references to all bundles in the <PRODUCT_HOME>/repository/components/plugins
directory, which is where all components/bundles of a product are saved.