OpenESB SE and JNDI

Introduction

OpenESB components require JNDI connections to access to external resources like Databases or Message Brokers. Embedded in an application server container, OpenESB receives a full JNDI context during OpenESB Core initialisation. On Glassfish platform, During its initialisation phase OpenESB receives the application server context from where JNDI information can be retrieved. In Glassfish, the scope of the JNDI context is the domain. Thus, instance of OpenESB belonging to the same domains (ex: a cluster configuration) share the same JNDI information.

On JBoss platform, OpenESB takes advantage of JBoss JNDI configuration. OpenESB for JBoss team must precise how OpenESB instances deployed in JBoss cluster share JNDI context..

On OpenESB standalone edition, there is no Java EE container and no JDNI context per default. The aim of this page is to share idea and design on a JNDI implementation for OpenESB SE and by extension, this implementation could be used to remove JNDI correlation between OpenESB and its container.

Implementing JNDI API for OpenESB is not a hard challenge; however, OpenESB has not been designed to run as a single standalone application but in a cloud environment from dozen to thousand instances at the same time. In a multi instance configuration, OpenESB instances are brought together by group. Group allows synchronisation between the instances; when a new component is installed or a new application deployed in a group a synchronisation process start to upgrade all the instances of the group.

The first question regarding JNDI in a multi-instances architecture is what level must be chosen to define JNDI binding:

-          If JNDI bindings are defined at the group level, what about a configuration with one instance only (for test purpose for example)

-          If JNDI bindings are defined at the instance level, how to synchronize the instances of a group.

I'm not very found in using a default group as it is designed for the Glassfish platform.

Another topic is the update of the JNDI directory. it is not conceivable to stop hundreds OpenESB instances to update any binding.