Friday, January 11, 2008

More uses WSO2 Registry

I discussed about main methods of using the WSO2 Registry here. We can combine those methods of individual usages to achieve more interesting deployments of the Registry.

Let's consider the combination of Registry server deployment and the remote Registry deployments. In this scenario, you can start with deploying the Registry war file in an application server. To start with, create the initial users and roles to whom you are expecting to give some level of administrative privileges. Then you can define the initial categorizations of the Registry by creating the top level collection structure. These collections may include sub-collections for each of your departments, partners, suppliers, clients, etc. Then you can give the desired permission levels for the users who are supposed to manage each of those sub-collections. Once this is done, managers/heads of each sub-collection can use the Registry to store all the resources needed for their sections. These include the employee records (word documents), accounts (excel sheets), business plans (presentations), product details (pdf files), etc.

But that's not all. All the SOA related resources for each department can also be stored in the sub-collection tree of corresponding department. IT managers can store WSDLs for their services, jars/aars for pluggable components or services, configuration files used by department's servers, etc in the sub-collection tree of their department. Once you setup the resources for your SOA deployments in the Registry, you can point your web services servers, ESBs, application servers, etc to the Registry. Any server, that is completely unaware about the Registry or its APP based protocol can use it to fetch resource. Because simple HTTP GET requests are all you need to fetch resources from the WSO2 Registry. But if you want to access all the features provided by the Registry, you can embed the Registry APP client to your Java servers and call the Registry API though it. In this way, you can manage your organization's general resources as well as resources for driving the SOA deployments of your organization around the WSO2 Registry.

Three ways of using WSO2 Registry

In my previous post, I blogged about the 0.1 release of WSO2 Registry. Below are three simple ways of putting it in use.

Registry server with the cool web UI

This mode of usage is targeted at end users who want to organize and manage their enterprise/organization around the Registry. You can start this with virtually zero steps. Just drop the wso2registry.war file in to an application server and you are done! Now point your web browser to the URL http://localhost:8080/wso2registry (you have to use the port of your application server). You will get the web UI of the Registry, from which you can perform all the operations supported by the Registry.

Now you can keep on adding resources, categorizing them using collection, creating users/roles, granting permissions for users to access only the required operations on required resources, etc. So that is the initial administration step. Once you create necessary administrative users and roles, you can open up the Registry to your organization (and probably to your partners as well). Then sit back and watch how your enterprise's registry grows as users fill in content, tag them, comment on them, rate resources.... Basically Registry provides the infrastructure for building a community from your organization's members (and partners) who collaboratively builds and manages the resources of your enterprise.

Registry as a Java library for building content oriented applications

Core of the Registry can be embedded in Java application as a jar file. It provides an API through which all the features provided by the Registry can be accessed. So what is the use case of this... It serves as the back end to build applications that need to store and manage any content. In addition, your application automatically gets all the tagging, commenting, rating, versioning,... features. Plus, the comprehensive permission scheme on all the resources stored in the Registry. We, at WSO2 has used this Registry core to build the community site for WSO2 Mashup server. You can find a perfect example of building a Web 2.0 style community site using the WSO2 Registry library in the Mashup community site.

Registry to host remote content for applications

WSO2 Registry provides a remote API using APP. Currently it provides a Java APP client for the Registry API. You can embed this client in your Java applications and use WSO2 Registry as a remote content repository for your applications. This can serve as a great method for clustered deployment of content oriented applications, where all applications can be pointed to the same Registry for synchronizing the content among all nodes. Then all your applications get the community features mentioned above as well. As the Registry is running in the server mode in this case, you can simply use the web UI to administer the content of distributed applications.

As it uses the APP as the wire protocol, it is not restricted to Java. Programs written in any language can process the APP based protocol mentioned here and access the Registry remotely.

This is very high level overview of the uses of WSO2 Registry. Each of the scenarios mentioned above has more application specific usages. Start playing around and discover how it suits your organization or the application.