Monday, January 12, 2015

Storing in Carbon Registry


In WSO2, "Carbon" is the unique OSGi-based middleware platform for all WSO2 carbon products. In every carbon product like Message Broker, Complex Event Processor (CEP) and Enterprise Service Bus (ESB) has in-built carbon registry as one of common carbon feature. That in-built registry can be easily access by product management console.

Using carbon registry as a service for a carbon component

When developing an external carbon component as stat publisher for Message Broker, had to use in-built carbon registry to store UI data of stat publisher component. For developing purpose, in-built carbon registry can be use as follows: (Used the example of stat publisher component)

  • Carbon platform is OSGi based platform. Therefore have to access carbon registry as a service.  

  •  First have to retrieve registry service from Activator Class of the component. (Every OSGi bundle has bundle activator class)

  • Importing package
 import org.wso2.carbon.registry.core.service.RegistryService    

  •  src reference         
  @scr.reference name="org.wso2.carbon.registry.service"   
          interface="org.wso2.carbon.registry.core.service.RegistryService"  
          cardinality="1..1" policy="dynamic" bind="setRegistryService"   
          unbind="unsetRegistryService"  

  •  In activator class must have separate two methods to set registry to a variable and to unset.  

         /**     
         **Set RegistryService  
         **@param registryService - Registry for this server  
          */  
           protected void setRegistryService(RegistryService registryService) {  
           StatPublisherValueHolder.setRegistryService(registryService );  
           }  
         /**     
          **Remove RegistryService  
          **@param registryService - Registry for this server  
          */  
           protected void removeRegistryService(RegistryService registryService) {  
           StatPublisherValueHolder.setRegistryService(null);  
           }  

  • Through pointed registry service variable, can be used it to do any function within component context registry. Registry can be retrieve through registry service as follows;
 Registry registry = StatPublisherValueHolder.getRegistryService()  
                              .getConfigSystemRegistry(tenantId);    
                      
         ** In here use tenant ID to identify the carbon component instance. It will be useful in multitenancy environment.

Happy Storing in Carbon :)

Comments and Questions are well come !