XmlBlaster Logo



XmlBlaster Logo

Type NEW
Priority LOW
Topic XmlBlaster provides a framework to plugin drivers for new protocols to access xmlBlaster, and for drivers to callback to clients.

The protocol to access xmlBlaster and the protocol to callback a client are totally decoupled. You can for example access xmlBlaster using CORBA and callback to clients using email and http.

All xmlBlaster access is handled using three interfaces in the package org.xmlBlaster.protocol:

  • I_XmlBlaster: This is the only way to access the xmlBlaster core. Your new driver needs to access xmlBlaster by invoking these methods.
    I_XmlBlaster is implemented by a singleton XmlBlasterImpl, the invocations are checked there by the authentication server, allowing to do all security handling in one place.
    I_XmlBlaster has methods to pass the XmlKey and QoS as objects and not as literal xml ASCII string, for maximum performing native calls.
  • I_Driver: If you want to support a new protocol to access xmlBlaster you need to implement this interface.
    As an example have a look into CorbaDriver.java.
  • I_CallbackDriver: If you want to plug in a new protocol to callback to a client (for example with email), you need to implement this interface.
    For an example study CallbackCorbaDriver.java

Once you have implemented a new protocol driver, you need to add it to xmlBlasterPlugins.xml, it is then automatically loaded on next xmlBlaster startup:

Example entry to xmlBlasterPlugins.xml for Corba, RMI and XMLRPC etc. drivers:

   <plugin id='SOCKET' className='org.xmlBlaster.protocol.socket.SocketDriver'>
      <action do='LOAD' onStartupRunlevel='3' sequence='1' 
      <action do='STOP' onShutdownRunlevel='2' sequence='5'/>   

   <plugin id='IOR' className='org.xmlBlaster.protocol.corba.CorbaDriver'>
      <action do='LOAD' onStartupRunlevel='3' sequence='2'
      <action do='STOP' onShutdownRunlevel='2' sequence='4'/>   

   <plugin id='XMLRPC' className='org.xmlBlaster.protocol.xmlrpc.XmlRpcDriver'>
      <action do='LOAD' onStartupRunlevel='3' sequence='3'/> 
      <action do='STOP' onShutdownRunlevel='2' sequence='3'/>   

   <plugin id='STOMP' className='org.xmlBlaster.protocol.stomp.XbStompDriver'>
      <action do='LOAD' onStartupRunlevel='3' sequence='8' 
      <action do='STOP' onShutdownRunlevel='2' sequence='8'/>   

   <plugin id='RMI' className='org.xmlBlaster.protocol.rmi.RmiDriver'>
      <action do='LOAD' onStartupRunlevel='3' sequence='4' />
      <action do='STOP' onShutdownRunlevel='2' sequence='2'/>   

The callback driver protocol type for RMI is called "RMI" for XmlRpc "XMLRPC" the Corba driver protocol is called "IOR" and finally "SOCKET" is our native socket based protocol.
This string is used when you do your login in the qos to specify your callback wishes.
See requirement 'engine.qos.login.callback' for further directions.

Protocol specific syntax overview

The following table shows the URL syntax of the different supported protocols

ProtocolAddress syntaxExampleComment
bootstrap xmlBlaster://host:port xmlBlaster:// The xmlBlaster internal bootstrap http server, currently only used by the CORBA protocol plugin to find the server IOR
IOR see CORBA standard IOR:00012340034... The CORBA inter operable reference, usually this is loaded initially by our bootstrap http server but you can uses a Naming Service or an ior-file.
XMLRPC http://host:port/ The XmlRpc URL.
SOCKET socket://host:port socket:// The URL address markup of our proprietary SOCKET protocol.
STOMP stomp://host:port stomp:// The URL address markup of the STOMP protocol (http://stomp.codehaus.org/).
RMI rmi://host:registryPort/I_AuthServer rmi:// The RMI registry lookup and default name entry.
EMAIL see the email RFC joe@mars.univers The email specific addressing.

NOTE: Configuration parameters are specified on command line (-someValue 17) or in the xmlBlaster.properties file (someValue=17). See requirement "util.property" for details.
Columns named Impl tells you if the feature is implemented.
Columns named Hot tells you if the configuration is changeable in hot operation.

See REQ engine.runlevel
See REQ protocol.socket
See REQ protocol.stomp
See REQ protocol.corba.JacORB
See REQ protocol.corba.orbacus
See REQ protocol.corba.NameService
See REQ protocol.xmlrpc
See REQ protocol.rmi
See REQ protocol.email
See REQ protocol.soap
See REQ protocol.jms
See REQ engine.qos.login.callback
See API org.xmlBlaster.protocol.I_XmlBlaster
See API org.xmlBlaster.protocol.I_Driver
See API org.xmlBlaster.protocol.I_CallbackDriver
See TEST org.xmlBlaster.test.AllTests

This page is generated from the requirement XML file xmlBlaster/doc/requirements/protocol.xml

Back to overview