lockingfactory_impl.java
来自「RMI英文教程,从各个方面教你怎么进行RMI开发」· Java 代码 · 共 60 行
JAVA
60 行
package com.ora.rmibook.chapter17.better.factory;
import com.ora.rmibook.chapter17.better.valueobjects.*;
import com.ora.rmibook.chapter17.better.*;
import java.rmi.server.*;
import java.rmi.*;
import java.util.*;
public abstract class LockingFactory_Impl extends UnicastRemoteObject implements LockingFactory {
protected abstract Remote _getServer(String serverName);
private HashMap _lockedServerNames;
public LockingFactory_Impl() throws RemoteException {
_lockedServerNames = new HashMap();
}
public synchronized Remote getServer(String serverName) throws RemoteException, LockedServerException {
Remote returnValue = _getServer(serverName);
_lockedServerNames.put(serverName, serverName);
return returnValue;
}
public synchronized Remote[] getServers(String[] serverNames) throws RemoteException, LockedServerException {
Remote[] returnValue = new Remote[serverNames.length];
int counter;
for (counter = 0; counter < serverNames.length; counter++) {
try {
checkLock(serverNames[counter]);
Remote nextServer = getServer(serverNames[counter]);
returnValue[counter] = nextServer;
} catch (LockedServerException serverLocked) {
int returnCounter;
for (returnCounter = 0; returnCounter < counter; returnCounter++) {
serverNoLongerActive(serverNames[returnCounter]);
}
throw serverLocked;
}
}
return returnValue;
}
public synchronized void serverNoLongerActive(String serverName) throws RemoteException {
_lockedServerNames.remove(serverName);
}
private synchronized void checkLock(String serverName) throws LockedServerException {
if (null != _lockedServerNames.get(serverName)) {
throw new LockedServerException(serverName);
}
return;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?