Skip to content

frankframework/servicedispatcher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

License Maven Central Build Status

ibis-servicedispatcher

The IbisServiceDispatcher can be used to communicate between applications that reside in the same JVM or to communicate with a DLL. 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 DispatcherManager must be obtained by calling the static method getDispatcherManager() on DispatcherManagerFactory. Then:
  • to call a service, call processRequest(String clientName, String correlationId, String message, HashMap requestContext) on the DispatcherManager
  • to provide a service, register a RequestProcessor using register(RequestProcessor)

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>
  </pipe>

When using the dispatcher to call system libraries, you have to add the `dispatchType="DLL"` attribute.
  <pipe name="PipeCallingService">
    <sender 
      className="nl.nn.adapterframework.pipes.IbisJavaSender" 
      dispatchType="DLL"
      serviceName="nameOfService" >
    <sender>
  </pipe>
NOTE: In order te register system libraries in the Service Dispatcher you have to set the system property `ibis-servicedispatcher.dlls=path/to/library.dll`

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, the library 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.

About

No description, website, or topics provided.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •