From the client perspective, a stateless CORBA object invoked by means of the CICS® ORB is just a collection of methods—that is, a stateless object. Each remote method represents a piece of logic that may make one or more CICS API calls, including program-link calls, to existing CICS programs. CICS stateless CORBA objects execute in a CICS JVM. At the end of the remote method, the JVM is reset, causing any state data to be lost.
This implies that every remote method must be passed sufficient information in its parameter list to enable it to complete its work. No information is passed to the server ORB by way of the object reference, except the object type, which is used to find the implementation class. However, the methods of the object may save state in application-managed data storage between invocations. They will need to ensure that sufficient information is passed as parameters to subsequent methods so that the saved state can be retrieved.
A CORBA object can make outbound IIOP calls, including calls to enterprise beans running under the same or under a different CorbaServer. A CORBA object can even pass a reference to itself as a parameter on a remote IIOP method. This is known as a call back reference. However, if the target object uses the call back reference to call the first CORBA object, this new request is processed in a new JVM; thus it has no access to any state from the original JVM.
Method invocations may participate in Object Transaction Service (OTS) distributed transactions. If a client calls an IIOP application in the scope of an OTS transaction, information about the OTS transaction flows as an extra parameter on the IIOP call. If a target stateless CORBA object implements CosTransactions::TransactionalObject, the object is treated as transactional.