What is the 'Stibium' Naming and Directory Server ?
The Stibium naming server provides Naming and Directory Services that can be accessed by web-enabled elements of
distributed systems. A 'naming service' is a general term for a service that provides access to named bindings and/or
their attributes.
Stibium's services are provided by a web application. This makes them accessible via SOAP xml web services, which
are naturally both web-enabled and grid-enabled.
The Stibium web application uses xml data storage techniques and can store bindings that range from simple data types,
such as integers and strings, through to arbitrarily complex user-defined types. Complex types are handled by using
configurable state-serialization and object-encoding techniques.
The items of data that are stored by Stibium are identified by name, and are held in an xml document. In the
terminology of distributed systems the association between a name and an item of data is known as a binding.
These bindings can be stored in either persistent or transient mode. Transient items are only held in memory,
whilst persistent items are also stored on the web server's file system. Stibium's design includes a number of features
that enable it to work with either JNDI and/or xml-based application environments.
Java clients can access these naming and directory services using the Stibium JNDI Service Provider. This acts as
a client to the Stibium web application, and implements the standard JNDI naming and directory service API.
The Java JNDI
The Java Naming and Directory Interfaces (or JNDI) is a set of APIs built into Java that
provides a standardised means for communicating and interacting with a wide range of naming and directory services.
More information is given on our
Java JNDI
overview page.
The Stibium JNDI service provider implements the javax.naming.directory.DirContext interface for directory services,
which extends the javax.naming.Context interface for naming services. These are both described in detail in
Appendices B and C of
The Stibium Technical Manual.
Naming and Directory Services
In a distributed system, names are used to refer to a wide variety of types of resource, such as computers, files,
remote objects and web services. In this context, a pure name is a simple key used to identify such an item uniquely
within the appropriate scope or namespace.
The role of a naming service is to resolve a name: that is, to map a name onto either the resource that it identifies,
or more often, onto attributes of that resource, for example, a network address. A well-known and widely-used example of this
type of service is the Domain Name System (or DNS) which is used to map Internet host names onto their corresponding network
IP addresses.
Naming systems are often hierarchical in nature, and then use segmented or compound names, whose components reflect the
levels/nodes of the corresponding naming hierarchy.
Within a distributed computing environment, naming services constitute a significant part of the infrastructural glue that
provides integrity, flexibility and resilience to that environment. This type of model is well-established, although not
necessarily very widely appreciated. The Java JNDI is the standard API framework that is built into both Java J2SE and J2EE.
It facilitates uniform access to naming and directory services.
Naming and directory services are often used in situations where there is a need to provide distributed agents with bindings
that are shared and/or dynamic. A typical application is service registration and discovery.
Directory Services
Directory Services are an extension of naming services that also include the ability to store, manipulate and recover
attributes associated with contexts and bindings. In JNDI terms, such directory services extend naming services through
a richer API, which provides access to additional attribute-related functionality.
SOAP XML Web-Services
Stibium's naming services are made available to software clients via SOAP xml web-services. This is a 'remoting'
mechanism that enables function calls to be made across a network using standardised Internet techniques and protocols.
Messages between the service end points are represented textually in the form of xml, according to the SOAP encoding rules.
Whilst the SOAP protocol is, in principle, independent of the mechanism used to transport xml messages between the end
points, most often (and in this case) they are sent using the Internet standard http or https transport protocols.
By providing these xml web services, Stibium's functionality can, in principle, be made available to any SOAP-enabled
client on the web or the grid, via either the Internet or a local network. This type of web service is rapidly becoming
a widely-adopted, and perhaps even the dominant, new mechanism for providing such services across a wide range of
operational contexts and hardware/software platforms.
The combination of http and xml makes such services widely accessible and provides for a high degree of interoperability
between the components of a distributed systems framework, across hardware, software and operating system boundaries.
For more information see our introduction to
XML Web-Services
page.
Applications For Stibium
Stibium can be used in many situations where it is necessary or desirable to store a hierarchical structure of named
items and where either local or remote web-service access is appropriate.
This can be particularly useful when many distributed agents have a shared stake in the data that is stored,
when the bindings are dynamic or subject to change, and/or when it is necessary to 'mix and match' JNDI and xml based
technologies.