Creating New Server Profiles
Carbon servers have a notion called server profiles. Logical grouping of set of features/components is known as a server profile. Every Carbon server has a default shipped profile named 'default' profile. This default profile consists of the complete feature set corresponding to a particular product. For an example, the WSO2 Application Server's default profile has all the feature set that corresponds to an application server.
Apart from the default profile, a server can have several other server profiles depending on the use cases. Given below are the available profiles in WSO2 Application Server.
- default: Default profile.
- worker: This profile only consists of the back-end feature set of the Application Server. That is it does not include the management console related features of Application Server. This profile is used to start the server as a worker node, in a worker-manager setup.
Likewise, the exact number/name of server profiles, depends on the individual products/servers.
Installing features to the default profile
The Carbon kernel gets shipped with the default profile. Therefore, it is just a matter of installing new features on top of the existing 'default' profile.
<execution> <id>3-p2-profile-generation</id> <phase>package</phase> <goals> <goal>p2-profile-gen</goal> </goals> <configuration> <profile>default</profile> <metadataRepository>file:${basedir}/target/p2-repo</metadataRepository> <artifactRepository>file:${basedir}/target/p2-repo</artifactRepository> <destination> ${basedir}/target/wso2carbon-core-${carbon.kernel.version}/repository/components </destination> <deleteOldProfileFiles>true</deleteOldProfileFiles> <features> <feature> <id>org.wso2.carbon.custom.feature.group</id> <version>$custom.verion</version> </feature> </features> </configuration> </execution>
Creating a new server profile and installing features
Creating a new server profile is equal to materializing a new profile. Therefore, first we have to publish the product definition to a P2-repo and refer it while materializing a product.
Publishing the product definition to p2-repo
<execution> <id>publishing product</id> <phase>package</phase> <goals> <goal>publish-product</goal> </goals> <configuration> <productConfigurationFile> ${basedir}/carbon.product </productConfigurationFile> <executable> ${basedir}/target/org.eclipse.equinox.executable_3.5.0.v20110530-7P7NFUFFLWUl76mart </executable> <metadataRepository>file:${basedir}/target/p2-repo</metadataRepository> <artifactRepository>file:${basedir}/target/p2-repo</artifactRepository> </configuration> </execution>
Creating a new user profile
<execution> <id>creating a new profile</id> <phase>package</phase> <goals> <goal>materialize-product</goal> </goals> <configuration> <productConfigurationFile>${basedir}/carbon.product</productConfigurationFile> <metadataRepository>file:${basedir}/target/p2-repo</metadataRepository> <artifactRepository>file:${basedir}/target/p2-repo</artifactRepository> <targetPath>file:${basedir}/target/wso2carbon-core-${carbon.kernel.version}/repository/components</targetPath> <profile>worker</profile> </configuration> </execution>
Installing features to 'worker' profile
<execution> <id>p2-profile-generation-for-worker-profile</id> <phase>package</phase> <goals> <goal>p2-profile-gen</goal> </goals> <configuration> <profile>worker</profile> <metadataRepository>file:${basedir}/target/p2-repo</metadataRepository> <artifactRepository>file:${basedir}/target/p2-repo</artifactRepository> <destination> ${basedir}/target/wso2carbon-core-${carbon.kernel.version}/repository/components </destination> <deleteOldProfileFiles>true</deleteOldProfileFiles> <features> <feature> <id>org.wso2.carbon.core.common.feature.group</id> <version>${carbon.platform.version}</version> </feature> <feature> <id>org.wso2.carbon.core.server.feature.group</id> <version>${carbon.platform.version}</version> </feature> <feature> <id>org.wso2.carbon.core.runtime.feature.group</id> <version>${carbon.platform.version}</version> </feature> <feature> <id>org.wso2.carbon.custom.feature.group</id> <version>$custom.verion</version> </feature> </features> </configuration> </execution>
Listing the available profiles in a server
- Start the server with
-DosgiConsole
system property.
This will give the access to the OSGi console. - Execute the command
provlp
.
This will give the list of server profiles available in the run-time.
Starting a specific server profile
You can generally start the server with the server profile name given as the input parameter as shown below.
./wso2Server.sh -Dprofile=<profileName>
However, if you want to start the server as a worker node (Worker profile), it is recommended to set the profile in the product startup script (stored in the <PRODUCT_HOME>/bin/
directory) as a system property as shown below.
'-DworkerNode=false'