Constraints for a remote call come from two sources:
A remote call will be performed only if the combined requirements (from both sources) can be satisfied. If the combined requirements cannot be satisfied, a {@link java.rmi.ConnectIOException} will be thrown by theremote call, typically containing (but not required to contain) a nested {@link net.jini.io.UnsupportedConstraintException}. In addition to the requirements, both client and server preferences will be satisfied, to the extent possible.
Note that constraints imposed by the communication mechanism must be factored into the requirements. For example, if the only explicit requirement is Delegation.YES
, but the communication mechanism always requires client authentication, then effectively a ClientAuthentication.YES
requirement exists, and so the Delegation.YES
requirement must also be satisfied.
The constraint mechanisms are designed such that client constraints do not weaken server constraints, and vice versa. However, it is certainly possible to specify conflicting constraints. Preferences that conflict with requirements are ignored, and if preferences conflict with each other it is arbitrary as to which (if any) are satisfied, but if there are conflicting requirements the remote call will not be made. @author Sun Microsystems, Inc. @since 2.0
|
|