< prev index next >

src/java.corba/share/classes/com/sun/corba/se/spi/oa/ObjectAdapter.java

Print this page

        

*** 87,97 **** * <ol> * <li>A remote invocation, where the dispatch is handled in the server subcontract.</li> * <li>A local invocation, where the dispatch is handled in the client subcontract.</li> * <li>A cached local invocation, where the servant is cached when the IOR is established * for the client subcontract, and the dispatch is handled in the client subcontract ! * to the cached subcontract.<li> * </ol> * <p> * Each of these 3 cases is handled a bit differently. On each request, assume as known * ObjectId and ObjectAdapterId, which can be obtained from the object key. * The ObjectAdaptorFactory is available in the subcontract registry, where it is --- 87,97 ---- * <ol> * <li>A remote invocation, where the dispatch is handled in the server subcontract.</li> * <li>A local invocation, where the dispatch is handled in the client subcontract.</li> * <li>A cached local invocation, where the servant is cached when the IOR is established * for the client subcontract, and the dispatch is handled in the client subcontract ! * to the cached subcontract.</li> * </ol> * <p> * Each of these 3 cases is handled a bit differently. On each request, assume as known * ObjectId and ObjectAdapterId, which can be obtained from the object key. * The ObjectAdaptorFactory is available in the subcontract registry, where it is
*** 111,123 **** * <li>oa.returnServant()</li> * <li>oa.exit()</li> * <li>pop info</li> * </ol> * </li> ! * REVISIT: Is this the required order for exit/pop? Cna they be nested instead? * Note that getInvocationServant and returnServant may throw exceptions. In such cases, ! * returnServant, exit, and pop must be called in the correct order. * <li>The local pattern: * <ol> * <li>oa = oaf.find( oaid )</li> * <li>oa.enter()</li> * <li>info = oa.makeInvocationInfo( oid )</li> --- 111,123 ---- * <li>oa.returnServant()</li> * <li>oa.exit()</li> * <li>pop info</li> * </ol> * </li> ! * <!-- REVISIT: Is this the required order for exit/pop? Cna they be nested instead? * Note that getInvocationServant and returnServant may throw exceptions. In such cases, ! * returnServant, exit, and pop must be called in the correct order. --> * <li>The local pattern: * <ol> * <li>oa = oaf.find( oaid )</li> * <li>oa.enter()</li> * <li>info = oa.makeInvocationInfo( oid )</li>
*** 126,139 **** * <li>oa.getInvocationServant( info )</li> * <li>dispatch to servant</li> * <li>oa.returnServant()</li> * <li>oa.exit()</li> * <li>pop info</li> ! * <ol> * </li> ! * This is the same as the remote case, except that setExecuteReturnServantInResponseConstructor ! * is not needed (or possible, since there is no server request). * <li>The fast local pattern: When delegate is constructed, * first extract ObjectKey from IOR in delegate, * then get ObjectId, ObjectAdapterId, and ObjectAdapterFactory (oaf). Then: * <ol> * <li>oa = oaf.find( oaid )</li> --- 126,139 ---- * <li>oa.getInvocationServant( info )</li> * <li>dispatch to servant</li> * <li>oa.returnServant()</li> * <li>oa.exit()</li> * <li>pop info</li> ! * </ol> * </li> ! * <!-- This is the same as the remote case, except that setExecuteReturnServantInResponseConstructor ! * is not needed (or possible, since there is no server request). --> * <li>The fast local pattern: When delegate is constructed, * first extract ObjectKey from IOR in delegate, * then get ObjectId, ObjectAdapterId, and ObjectAdapterFactory (oaf). Then: * <ol> * <li>oa = oaf.find( oaid )</li>
*** 141,158 **** * <li>push info (needed for the correct functioning of getInvocationServant)</li> * <li>oa.getInvocationServant( info )</li> * <li>pop info * </ol> * The info instance (which includes the Servant) is cached in the client subcontract. ! * <p>Then, on each invocation:</p> * <ol> * <li>newinfo = copy of info (clone)</li> * <li>info.setOperation( operation )</li> * <li>push newinfo</li> * <li>oa.enter()</li> * <li>dispatch to servant</li> ! * <li>oa.returnServant()</li> // XXX This is probably wrong: remove it. * <li>oa.exit()</li> * <li>pop info</li> * </ol> * </li> * </ol> --- 141,158 ---- * <li>push info (needed for the correct functioning of getInvocationServant)</li> * <li>oa.getInvocationServant( info )</li> * <li>pop info * </ol> * The info instance (which includes the Servant) is cached in the client subcontract. ! * <p>Then, on each invocation: * <ol> * <li>newinfo = copy of info (clone)</li> * <li>info.setOperation( operation )</li> * <li>push newinfo</li> * <li>oa.enter()</li> * <li>dispatch to servant</li> ! * <li>oa.returnServant()</li> <!-- XXX This is probably wrong: remove it. --> * <li>oa.exit()</li> * <li>pop info</li> * </ol> * </li> * </ol>
< prev index next >