If the transport uses a cached connection and the endpoint of the connection
has failed, the error shows up as an UnmarshalException and the ActivatableRef
will not retry the call (it should only retry calls if the call cannot reach
the server).
If the StreamRemoteCall flushes the output stream after writing the call
header, it can throw a java.rmi.ConnectException so that a higher level
(UnicastRef or ActivatableRef) can attempt to reestablish the connection.
Also note that in ActivatableRef, a call should not be retried if a
MarshalException occurs since it is unknown whether the bytes were actually
deserialized at the server (this preserves "at most once" call semantics).
has failed, the error shows up as an UnmarshalException and the ActivatableRef
will not retry the call (it should only retry calls if the call cannot reach
the server).
If the StreamRemoteCall flushes the output stream after writing the call
header, it can throw a java.rmi.ConnectException so that a higher level
(UnicastRef or ActivatableRef) can attempt to reestablish the connection.
Also note that in ActivatableRef, a call should not be retried if a
MarshalException occurs since it is unknown whether the bytes were actually
deserialized at the server (this preserves "at most once" call semantics).
- duplicates
-
JDK-4032926 Naming.lookup() can't handle second lookups on the same url spec.
-
- Closed
-
- relates to
-
JDK-4179605 (1.1.x) Unmarshal exception when rmiregistry is restarted.
-
- Closed
-
-
JDK-7145846 RMI newConnection() method performs unnecessary Ping/PingAck
-
- Closed
-
-
JDK-4991252 TEST_BUG: regression test sun/rmi/transport/tcp/DeadCachedConnection.java fails
-
- Closed
-