环境:Spring Framework 3.2.3.RELEASE
是否有办法使用RmiProxyFactoryBean
或其他任何其他直接弹簧上下文配置实现故障转移?
我有一个ServerA作为主要和& ServerB作为备用RMI服务器。如果与ServerA的连接断开,则应将RMI调用定向到ServerB。
答案 0 :(得分:1)
我已覆盖refreshAndRetry
& lookupStub
的{{1}}方法可以实现此故障转移。
RMIProxyFactoryBean
配置XML:
@Override
protected Object refreshAndRetry(MethodInvocation invocation) throws Throwable {
if (logger.isDebugEnabled()) {
logger.debug("Refreshing & retrying remote invocation.");
}
swapHitURLs();//Swap primary<>secondary URL
return super.refreshAndRetry(invocation);
}
@Override
protected Remote lookupStub() throws RemoteLookupFailureException {
Remote stub=null;
if (logger.isDebugEnabled()) {
logger.debug("Looking up the stub.");
}
try{
stub=super.lookupStub();
}catch(RemoteLookupFailureException rlfx){
swapHitURLs();//Swap primary<>secondary URL
if (logger.isDebugEnabled()) {
logger.debug("Looking up the stub for swapped URL.");
}
stub=super.lookupStub();
}
return stub;
}
如果有更好的选择让我知道。