异常:
weblogic.rmi.extensions.RequestTimeoutException: RJVM response timed out after: '10000' milliseconds.
at weblogic.rjvm.BasicOutboundRequest.sendReceive(BasicOutboundRequest.java:108)
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:290)
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:248)
at TestEJB_n1fsdc_EOImpl_815_WLStub.test(Unknown Source)
at TestClient.main(TestClient.java:23)
使用的指引:
This feature provides a work around for legacy systems where the behavior of asynchronous calls is desired but not yet implemented. BEA recommends legacy systems implement more appropriate technologies if possible, such as:(建议用以下方式代替)
Asynchronous RMI invokations
JMS and Message Driven Beans (MDBs)
HTTP servlett applications
If you need to use the RMI timeout for a legacy sytem, review the following guidelines:
The RMI timeout should be used only when the following three conditions are met:(约束)
The method call is idempotent (例如f(f(x)) = f(x))or does not introduce any state change
The method call is non-transactional
No JMS resources are involved in the call
There is no transparent failover to another cluster node when a request times out.RequestTimeOutExceptionis always propogated to the caller.
The server continues to process requests that have timed out. The client is required check the state of the request on the server before reattempting the call.
If a server times out, the client has the ability to mark the server as unreachable in the client side cluster reference. This prevents calls from being directed to the marked server for a specified time.