Administration Architecture

Introduction

The purpose of this document is to think about a new way of managing / administering OpenESB runtime and JBI components bysing a new REST API.Until now, all JBI admin commands were done through JMX MBean. For example, we are using them for asadmin extension commands, JBI Ant tasks, Netbeans Composite Application Management Module.

Project Vision

The vision is to manage JBI Components through JMX Mbens from outside. we have decided to have web based user interface and command-line interface to manage  JBI Components through REST API. Later 

In scope

To build the RIA web application called OpenESB Admin Console to manage JBI Components through REST API service. 

To build Command-line tool to manage JBI Components through REST API. 

Out of scope

Later on we can come up with many interface such as Mobile,Java swing and so on to manage JBI Components through same REST API service.

 

Pros / Cons

  • MBeanServerConnection may be specific to a particular run-time (GFv2, JBoss AS 7, Standalone) and so we have to handle this with specific development.
  • By using JMX we have to open specific port through firewall, proxy, ...
  • REST is more standard than JMX since it uses the HTTP protocol.
  • REST through HTTP can be used by all languages (not only Java).
  • By using REST we can share a documented API with consumers.
  • Security can be setup easily for REST services and use standard : HTTPS / basic / encoded authentication / ...

High-level Architecture of OpenESB Admin:


Open ESB Administration Service layer is one point for all interfaces to manage JBI Components through REST API service. Two different sets of REST APIs are used in the above architecture. One set of API is a part of each OpenESB instance. This API is used to administer only that particular instance. (Should we expose this API to outside world?) The second set is part of OpenESB Administration Service Layer which is going to be the single point of contact for administration by various admin clients.

The below user interface layers uses Open ESB Administration Service layer to perform all Open ESB JBI components management tasks.

  • Open ESB-Admin command line tool
  •  WEB based Open ESB Admin console
  •  Mobile based Open ESB Admin console


    We are going to use Derby or H2 embedded data base to store all the instances and logical instance grouping information and the information such as 
  • Instance connection information – That is REST URLS of various instances running in same/different locations
    1. Installed shared library -  Installed shared library that belongs to that particular instances
    2. Installed components - Installed components that belongs to that particular instances and its related information.

                       Application variables & Configuration that belongs to each JBI components

                      State of each component

  • Installed assemblies - Installed service assemblies that belongs to that particular instances and its related information.

                    Application variables & Configuration that belongs to each JBI Service Assemblies.

                    State of each service assemblies

  • Logical Grouping Information – Store all the logical grouping information of different instances.

  • Damon thread runs in the background to sync the state of instance and logical group and keep update the embedded data base.

Rest Service Architecture

Module description

There are various modules that are identified as a part of managing JBI Components and the modules are:

  1. UI Modules:  such as Web based administration console, Command-line administration tool.
  2. Open ESB Administration Service layer : is the one point of contact for above UI layer to manage JBI Components through REST API service.
  3. Rest API core service to MBeanServerConnection specific to a particular run-time (GFv2, JBoss AS 7, Standalone).