< prev index next >

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

Print this page




  94 * <p>
  95 * Each of these 3 cases is handled a bit differently.  On each request, assume as known
  96 * ObjectId and ObjectAdapterId, which can be obtained from the object key.
  97 * The ObjectAdaptorFactory is available in the subcontract registry, where it is
  98 * registered under the subcontract ID.  The Subcontract ID is also available in the
  99 * object key.
 100 * <ol>
 101 * <li>The remote pattern:
 102 *   <ol>
 103 *   <li>oa = oaf.find( oaid )</li>
 104 *   <li>oa.enter()</li>
 105 *   <li>info = oa.makeInvocationInfo( oid )</li>
 106 *   <li>info.setOperation( operation )</li>
 107 *   <li>push info</li>
 108 *   <li>oa.getInvocationServant( info )</li>
 109 *   <li>sreq.setExecuteReturnServantInResponseConstructor( true )</li>
 110 *   <li>dispatch to servant</li>
 111 *   <li>oa.returnServant()</li>
 112 *   <li>oa.exit()</li>
 113 *   <li>pop info</li>
 114 *   <ol>
 115 * </li>
 116 * REVISIT: Is this the required order for exit/pop?  Cna they be nested instead?
 117 * Note that getInvocationServant and returnServant may throw exceptions.  In such cases,
 118 * returnServant, exit, and pop must be called in the correct order.
 119 * <li>The local pattern:
 120 *   <ol>
 121 *   <li>oa = oaf.find( oaid )</li>
 122 *   <li>oa.enter()</li>
 123 *   <li>info = oa.makeInvocationInfo( oid )</li>
 124 *   <li>info.setOperation( operation )</li>
 125 *   <li>push info</li>
 126 *   <li>oa.getInvocationServant( info )</li>
 127 *   <li>dispatch to servant</li>
 128 *   <li>oa.returnServant()</li>
 129 *   <li>oa.exit()</li>
 130 *   <li>pop info</li>
 131 *   <ol>
 132 * </li>
 133 * This is the same as the remote case, except that setExecuteReturnServantInResponseConstructor
 134 * is not needed (or possible, since there is no server request).




  94 * <p>
  95 * Each of these 3 cases is handled a bit differently.  On each request, assume as known
  96 * ObjectId and ObjectAdapterId, which can be obtained from the object key.
  97 * The ObjectAdaptorFactory is available in the subcontract registry, where it is
  98 * registered under the subcontract ID.  The Subcontract ID is also available in the
  99 * object key.
 100 * <ol>
 101 * <li>The remote pattern:
 102 *   <ol>
 103 *   <li>oa = oaf.find( oaid )</li>
 104 *   <li>oa.enter()</li>
 105 *   <li>info = oa.makeInvocationInfo( oid )</li>
 106 *   <li>info.setOperation( operation )</li>
 107 *   <li>push info</li>
 108 *   <li>oa.getInvocationServant( info )</li>
 109 *   <li>sreq.setExecuteReturnServantInResponseConstructor( true )</li>
 110 *   <li>dispatch to servant</li>
 111 *   <li>oa.returnServant()</li>
 112 *   <li>oa.exit()</li>
 113 *   <li>pop info</li>
 114 *   </ol>
 115 * </li>
 116 * REVISIT: Is this the required order for exit/pop?  Cna they be nested instead?
 117 * Note that getInvocationServant and returnServant may throw exceptions.  In such cases,
 118 * returnServant, exit, and pop must be called in the correct order.
 119 * <li>The local pattern:
 120 *   <ol>
 121 *   <li>oa = oaf.find( oaid )</li>
 122 *   <li>oa.enter()</li>
 123 *   <li>info = oa.makeInvocationInfo( oid )</li>
 124 *   <li>info.setOperation( operation )</li>
 125 *   <li>push info</li>
 126 *   <li>oa.getInvocationServant( info )</li>
 127 *   <li>dispatch to servant</li>
 128 *   <li>oa.returnServant()</li>
 129 *   <li>oa.exit()</li>
 130 *   <li>pop info</li>
 131 *   <ol>
 132 * </li>
 133 * This is the same as the remote case, except that setExecuteReturnServantInResponseConstructor
 134 * is not needed (or possible, since there is no server request).


< prev index next >