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'
onFail='resource.configuration.pluginFailed'/>
<action do='STOP' onShutdownRunlevel='2' sequence='5'/>
</plugin>
<plugin id='IOR' className='org.xmlBlaster.protocol.corba.CorbaDriver'>
<action do='LOAD' onStartupRunlevel='3' sequence='2'
onFail='resource.configuration.pluginFailed'/>
<action do='STOP' onShutdownRunlevel='2' sequence='4'/>
</plugin>
<plugin id='XMLRPC' className='org.xmlBlaster.protocol.xmlrpc.XmlRpcDriver'>
<action do='LOAD' onStartupRunlevel='3' sequence='3'/>
<action do='STOP' onShutdownRunlevel='2' sequence='3'/>
</plugin>
<plugin id='STOMP' className='org.xmlBlaster.protocol.stomp.XbStompDriver'>
<action do='LOAD' onStartupRunlevel='3' sequence='8'
onFail='resource.configuration.pluginFailed'/>
<action do='STOP' onShutdownRunlevel='2' sequence='8'/>
</plugin>
<plugin id='RMI' className='org.xmlBlaster.protocol.rmi.RmiDriver'>
<action do='LOAD' onStartupRunlevel='3' sequence='4' />
<action do='STOP' onShutdownRunlevel='2' sequence='2'/>
</plugin>
|
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
| Protocol | Address syntax | Example | Comment |
| bootstrap |
xmlBlaster://host:port |
xmlBlaster://127.168.1.1:3412 |
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/ |
http://127.168.1.1:8080/ |
The XmlRpc URL. |
| SOCKET |
socket://host:port |
socket://127.168.1.1:7608 |
The URL address markup of our proprietary SOCKET protocol. |
| STOMP |
stomp://host:port |
stomp://127.168.1.1:61613 |
The URL address markup of the STOMP protocol (http://stomp.codehaus.org/). |
| RMI |
rmi://host:registryPort/I_AuthServer |
rmi://127.168.1.1:1099/I_AuthServer |
The RMI registry lookup and default name entry. |
| EMAIL |
see the email RFC |
joe@mars.univers |
The email specific addressing. |