Problem:

  • Product Name: VisiBroker
  • Product Version: 7.0 and later
  • Product Component: QoS Timeout

When the programmer/developer is developing a CORBA application, it is reduced to a series of APIs invocation. It is not clear to the developers when the client ORB starts and expire the Quality of Service (QoS) Relative Roundtrip Timeout (RTT) timer.

Resolution:

1. Client Server Scenario

The round trip timer is started when VisiBroker client ORB establishes the connection to the Server and then writes into the socket. The client ORB must read the complete GIOP reply from the socket before the round trip timer expires.  Otherwise, a CORBA.TIMEOUT exception will be thrown to the Client application.

This is an example of the code snippet for the client application:

Bank.Account account = accountManager.open();

2. Server invokes Callback Object

The server has configured the Quality of Service Relative Round Trip timeout to prevent the hang in the client application from affecting itself.  The round trip timeout timer starts at the server ORB and ends when the GIOP reply message is completely read from the socket.
This is an example of the code snippet in the server application:

clientHander.invokeCallback();

3.  Client invokes Server which callback the client


This is an example of the code snippet for the Client Application:

Bank.Account account = accountManager.open(); <- block until the server has completed invokeCallback.

This is an example of the code snippet for the servant implementation in the Server:

void open(String name, ClientHandler clientHandler){

  clientHandler.invokeCallback();

}

4. 3 Tier Architecture


This 3 tiers architecture describes both the execution path and time taken to process by both the Middle and End Server.  This sequence diagram is also valid when the middle server is replaced by a gatekeeper.