The IbisServiceDispatcher can be used to communicate between applications that reside in the same JVM. It was developed to provide a means of communication in native Java between the Everest Knowledge Framework (EKF) and the adapters build using the Ibis Framework.

usage

To use the IbisServiceDispatcher, an instance of the {@link nl.nn.adapterframework.dispatcher.DispatcherManager DispatcherManager} must be obtained by calling the static method {@link nl.nn.adapterframework.dispatcher.DispatcherManagerFactory#getDispatcherManager() getDispatcherManager()} on {@link nl.nn.adapterframework.dispatcher.DispatcherManagerFactory DispatcherManagerFactory}. Then:

ibis-configuration

Use the following code in an Ibis-configuration to provide a service using the service dispatcher:
(Any parameter passed in the requestContext is made available to the Adapter as a PipeLineSession-variable)
  <receiver name="JavaListener" returnIfStopped="Service not available">
    <listener 
      className="nl.nn.adapterframework.receivers.JavaListener" 
      serviceName="ibis4xxx-myadapter" 
    />
  </receiver>

To call a service provided by the service dispatcher from within a Ibis-configuration, use the JavaSender, like this:
(Any parameter defined with the sender is passed on to the processing service in the requestContext)
  <pipe name="PipeCallingService">
    <sender 
      className="nl.nn.adapterframework.pipes.IbisJavaSender" 
      serviceName="nameOfService" >
      <param name="param1" value="valueOfThisParameter"/>
    <sender>
    <forward name="success" path="READY"/>
  </pipe>

operation

The IbisServiceDispatcher provides a map of RequestProcessors. This map is created by applications that register themselves with the servicedispatcher. Other applications can use the servicedispatcher to execute a request by a named RequestProcessor. The servicedispatcher locates the RequestProcessor in its map, set the appropriate classloader context, and executes the request as if it was done within the application the ReqestProcessor resides. To be able to do so, the servicedispatcher must be deployed on the classpath of the server, that is shared by all applications.

installation

To install the IbisServiceDispatcher version 1.1, the file IbisServiceDispatcher-1.1.jar must be placed on the classpath of the server. Due to the way of operation, it is not sufficient to have it only in a lib directory of a .war file or similar.