Product: OpenFusion JacORB
Version: All
Description:
How does JacORB implement one way requests.
Resolution:
For one way requests the SyncScopePolicy defines at what point the one way invocation returns to the caller.
There are four possible values for the SyncScopePolicy.
1. SYNC NONE The invocation returns immediately.
2. SYNC WITH TRANSPORT The invocation returns after the request has been passed to the transport layer.
3. SYNC WITH SERVER The server sends an acknowledgement back to the client when it has received the request, but before actually invoking the target. The client-side call blocks until this acknowledgement has been received.
4. SYNC WITH TARGET An ordinary reply is sent back by the server, after the target invocation has completed. The client-side call blocks until this reply has been received.
By default the SYNC_WITH_TRANSPORT is used.
More information can be found in the Quality of Services section of the JacORB Programming Guide, which can be found in the installation in the /docs/JacORB/pdf directory.
For a one way operation JacORB uses the equivalent of SYNC_WITH_TRANSPORT. The invocation returns after it has been passed to the transport layer.
For SYNC_NONE, JacORB will create a separate thread to logically separate the client method invocation from the transport protocol. This is described within the 'Quality Of Service' chapter, subsection 'Sync Policies' and the thread itself is described within 'JacORB Threads', subsection 'PassToTransport' all within the JacORB Programming Guide.
In order to avoid waiting for a response from the server (for SYNC_NONE and SYNC_WITH_TRANSPORT policies) JacORB internally does not create a ReplyReceiver for that request. It simply dispatches the request to the transport (be it via a separate thread or not) and returns.
If a developer uses SYNC_NONE it is very unlikely but theoretically possible that invocations may arrive out of order. The requests should arrive at least, if there are no system exceptions.
#OpenFusion
#KnowledgeDocs