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).
|