This documentation is for WSO2 API Manager 2.1.0 View documentation for the latest release.
Product Profiles - API Manager 2.1.0 - WSO2 Documentation

All docs This doc
||
Skip to end of metadata
Go to start of metadata

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.

ProfileCommand Option with Profile NameDescription
Gateway worker
-Dprofile=gateway-worker -DworkerNode=true    

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).


Prior to WSO2 API Manager 2.1.0, the Publisher and Gateway were required to be on two different cluster domains. However, from WSO2 API Manager 2.1.0 onwards  clustering is no longer a necessity, because the Publisher can play the role of the Gateway Manager. Therefore, now, the Gateway Manager profile (-Dprofile=gateway-manager) has been deprecated as it is redundant.

Starting an API-M profile

  1. Perform the following configurations on the profile.

    When using this profile, make sure you configure the Gateway Worker as described in Configuring the Gateway in a Distributed Environment with rsync.

    Carryout the following configurations on the Key Manager node before starting the Key Manager.

    1. Open the <API-M_HOME>/repository/conf/axis2/axis2.xml file and remove the configuration section that starts with <transportSender name="ws" class="org.wso2.carbon.websocket.transport.WebsocketTransportSender">.
    2. In the <API-M_HOME>/repository/conf/api-manager.xml file, set the values of the following elements to false.

      <ThrottlingConfigurations>
      ...
      <DataPublisher>
      <Enabled>false</Enabled>
      </DataPublisher>
      ...
      </ThrottlingConfigurations>
      <ThrottlingConfigurations>
      ...
      <JMSConnectionDetails>
      <Enabled>false</Enabled>
      </JMSConnectionDetails>
      ...
      </ThrottlingConfigurations>

    When using this profile, make sure you configure the Traffic Manager as described in the Configuring the Traffic Manager section.

    To disable registry indexing when setting up the Traffic Manager, see Registry indexing configurations.

    Carryout the following configurations on the Publisher node before starting the Publisher.

    1. Set the values of the following elements to false in the <API-M_HOME>/repository/conf/api-manager.xml file.

      <ThrottlingConfigurations>
      ...
      <DataPublisher>
      <Enabled>false</Enabled>
      </DataPublisher>
      ...
      </ThrottlingConfigurations>
      <ThrottlingConfigurations>
      ...
      <JMSConnectionDetails>
      <Enabled>false</Enabled>
      </JMSConnectionDetails>
      ...
      </ThrottlingConfigurations>
    2. Open the <API-M_HOME>/repository/conf/axis2/axis2.xml file and remove the configuration section that starts with <transportSender name="ws" class="org.wso2.carbon.websocket.transport.WebsocketTransportSender">.

    Carryout the following configurations on the Store (Developer Portal) node before starting the Store.

    1. Before starting the server, set the values of the following elements to false in the <API-M_HOME>/repository/conf/api-manager.xml file.

      <ThrottlingConfigurations>
      ...
      <DataPublisher>
      <Enabled>false</Enabled>
      </DataPublisher>
      ...
      </ThrottlingConfigurations>
      <ThrottlingConfigurations>
      ...
      <JMSConnectionDetails>
      <Enabled>false</Enabled>
      </JMSConnectionDetails>
      ...
      </ThrottlingConfigurations>
    2. Open the <API-M_HOME>/repository/conf/axis2/axis2.xml file and remove the configuration section that starts with <transportSender name="ws" class="org.wso2.carbon.websocket.transport.WebsocketTransportSender">.

  2. Carryout the following configuration changes on all the profiles with the exception of the Gateway profiles.

    1. Open the axis2.xml file and comment out the following.

      <transportSender name="ws" class="org.wso2.carbon.websocket.transport.WebsocketTransportSender">
      <parameter name="ws.outflow.dispatch.sequence" locked="false">outflowDispatchSeq</parameter>
      <parameter name="ws.outflow.dispatch.fault.sequence" locked="false">outflowFaultSeq</parameter>
      </transportSender>
    2. Delete the WebSocketInboundEndpoint.xml file from the <API-M_HOME>/repository/deployment/server/synapse-configs/default/inbound-endpoints directory.
  3. Make sure to keep the following web apps, which are required, and remove the unnecessary web apps from the  <API-M_HOME>/repository/deployment/server/webapps directory of each node.

    The following are the web apps required for each node:

    ProfileRequired web apps
    Gateway Manageram#sample#pizzashack#v1 (Only needed if the Pizzashack sample API is used)
    api#am#admin#v0.11 (Only needed if you want to perform administrative tasks through Gateway Manager)
    authenticationendpoint
    Gateway Workeram#sample#pizzashack#v1 (Only needed if the Pizzashack sample API is used)
    api#am#admin#v0.11 (Only needed if you want to perform administrative tasks through Gateway Manager)
    Traffic Managershindig (The Shindig web app is used for the WSO2 CEP Dashboard)
    Key Managerauthenticationendpoint
    client-registration#v0.11
    oauth2
    throttle#data#v1
    API Publisheram#sample#pizzashack#v1 (Only needed if the Pizzashack sample API is used)
    api#am#publisher#v0.11
    authenticationendpoint
    API Store (Developer Portal)api#am#store#v0.11
    authenticationendpoint

  4. Make sure to keep the required Jaggery apps and remove the unnecessary Jaggery apps from the  <API-M_HOME>/repository/deployment/server/jaggeryapps directory of each node.

    The following are the Jaggery apps that are required for each node:

    Profile
    Required Jaggery apps
    Gateway WorkerNone
    Key ManagerNone
    Traffic ManagerNone
    Publisherpublisher, admin
    Storestore

  5. Run the required API-M profile.
    Execute one of the following commands based on your OS:

    You can start only one profile at a time.

    OSCommand & Example
    Windows
    <PRODUCT_HOME>/bin/wso2server.bat -Dprofile=<preferred-profile> --run

    For example to start the API Store execute the following command.

    <API-M_HOME>/bin/wso2server.bat -Dprofile=api-store --run
    Linux/Solaris
    sh <PRODUCT_HOME>/bin/wso2server.sh -Dprofile=api-store

    For example to start the API Store execute the following command.

    sh <API-M_HOME>/bin/wso2server.sh -Dprofile=api-store

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.


  • No labels