Architecture of the connector running as a client

The connector can process requests in the following two ways:

This section describes the architecture of the CORBA connector when it runs as a client. For details about the CORBA connector running as a server, see Architecture of the connector running as a server.

Request flow

Figure 1, illustrates the request flow when the connector runs as a client. In this scenario, the connector invokes a method on an object that resides on an external CORBA server. The connector acts as a client communicating with the CORBA server through the ORB. The connector communicates with the CORBA server by sending object requests to the server where the CORBA objects reside.

Figure 1. Request process when the connector acts as a client


  1. The connector receives a business object request from the integration broker.
  2. The connector creates a proxy object instance of the business object. The proxy object instance acts as a representation of the CORBA object to which the connector is sending the request. For details about how the connector creates and processes the proxy object, see How the connector works as a client.
  3. The connector processes the proxy object by using it to access the corresponding CORBA object running on CORBA server and write data to the application (object). The connector can also invoke methods on the CORBA object.
  4. The connector updates the proxy object by reading, or getting, data from CORBA server object.
  5. The connector returns a message to the integration broker indicating that the original object request was either successful or unsuccessful (a FAIL status). If the request was successful, the connector also returns the updated business object to the broker.

How the connector works as a client

This section describes in detail how the different parts of the connector process a business object when the connector runs as a client, as illustrated in Figure 2.

Figure 2. The connector for CORBA running as a client


  1. When you first start up the connector and run it as a client, the connector's Agent class performs the following initialization processes:
  2. The integration broker sends a request, in the form of a business object, to the connector.
  3. The connector's BO handler receives the object.
  4. The doVerbFor() method of the BO handler calls the Dispatch() method, which reads the BO ASI to obtain the proxy class name. The Dispatch() method gets the proxy class name and sends it to the CORBA Proxy Instantiator.
  5. The CORBA Proxy Instantiator uses the proxy class name to load the proxy class (qualified using valid Java class notation, ie. xxxxx.myclass) and create a proxy object instance, loading it in the per-call object pool. The CORBA Proxy Instantiator verifies if the object is one of the following:
  6. Dispatch reads through the BO's verb ASI and builds a list of methods. The verb ASI is an ordered list of attribute names. Each attribute represents a method on the proxy object. In other words, the verb ASI is not a list of methods, but a list of attributes, each one having a value that represents a proxy object method.
  7. For each method on the verb ASI list, the InvokeMethods() method of the BO handler calls InvokeMethod() to do one of the following:

    Note:
    If the verb ASI is empty, the BO handler will search for a method on the BO with populated parameters and call that. Only one method can have populated parameters. Otherwise, if multiple methods are populated and the verb ASI is empty, then the connector logs an error and returns a FAIL code.
  8. For each method of the proxy object, Invoker constructs the parameters and arguments of the method by doing the following:
  9. When values are returned from the CORBA server, the LoadFromProxy function loads the data returned from the proxy object onto the BO. (For return parameters, the connector creates the return proxy object and also updates the in / out parameters).
  10. The connector returns the business object back to the integration broker.

Copyright IBM Corp. 1997, 2003