Previous | Table of Contents | Next |
ORB clients can use the following algorithm to locate the server capable of handling the invoke RPC for a particular operation:
1. Pick a profile with TAG_INTERNET_IOP or TAG_MULTIPLE_COMPONENTS from the IOR. Make this the original profile and the current profile. If no profiles with either tag are available, operations cannot be invoked using DCE-CIOP with this IOR.
2. Get a binding handle to try from the current profile. See Section 16.5.1, “DCE CIOP String Binding Component,? on page 16-17 and Section 16.5.2, “DCE-CIOP Binding Name Component,? on page 16-18. If no binding handles can be obtained, the server cannot be located using the current profile, so go to step 1.
3. Perform either a locate or invoke RPC using the object key from the current profile.
• If the RPC fails, go to step 2 to try a different binding handle. • If the RPC returns INVOKE_TRY_AGAIN or LOCATE_TRY_AGAIN, try the same RPC again, possibly after a delay. • If the RPC returns either INVOKE_LOCATION_FORWARD or LOCATE_LOCATION_FORWARD, make the new IOR profile returned in the response message body the current profile and go to step 2. • If the RPC returns LOCATE_UNKNOWN_OBJECT, and the original profile was used, the object no longer exists. • Otherwise, the server has been successfully located.
Any invoke RPC might return INVOKE_LOCATION_FORWARD, in which case the client ORB should make the returned profile the current
profile, and re-enter the location algorithm at step 2.
If an RPC on a binding handle fails after it has been used successfully, the client ORB should start over at step 1.