#2 create Zone Nameservers

This commit is contained in:
Rasha Djurdjevic 2021-01-05 21:14:18 +01:00
parent 7e3854810b
commit 2df6123b39
2 changed files with 21 additions and 5 deletions

View File

@ -1,8 +1,10 @@
package dslab.nameserver; package dslab.nameserver;
import java.io.Serializable;
import java.rmi.RemoteException; import java.rmi.RemoteException;
public class NameServerRemote implements INameserverRemote { public class NameServerRemote implements INameserverRemote, Serializable {
@Override @Override
public void registerNameserver(String domain, INameserverRemote nameserver) throws RemoteException, AlreadyRegisteredException, InvalidDomainException { public void registerNameserver(String domain, INameserverRemote nameserver) throws RemoteException, AlreadyRegisteredException, InvalidDomainException {

View File

@ -24,9 +24,11 @@ public class Nameserver implements INameserver {
*/ */
public Nameserver(String componentId, Config config, InputStream in, PrintStream out) { public Nameserver(String componentId, Config config, InputStream in, PrintStream out) {
// only root nameserver creates RMI registry // only root nameserver creates RMI registry
if (componentId.equals("ns-root")) {
int registryPort = config.getInt("registry.port");
String registryName = config.getString("root_id"); String registryName = config.getString("root_id");
String registryHost = config.getString("registry.host");
int registryPort = config.getInt("registry.port");
if (componentId.equals("ns-root")) {
// Root Nameserver
INameserverRemote nameserverRemote = new NameServerRemote(); INameserverRemote nameserverRemote = new NameServerRemote();
try { try {
INameserverRemote stub = (INameserverRemote) UnicastRemoteObject.exportObject(nameserverRemote, registryPort); INameserverRemote stub = (INameserverRemote) UnicastRemoteObject.exportObject(nameserverRemote, registryPort);
@ -38,8 +40,20 @@ public class Nameserver implements INameserver {
e.printStackTrace(); e.printStackTrace();
} }
} else { } else {
// TODO zone nameservers // Zone Nameserver
System.out.println("Zone Nameserver"); String domain = config.getString("domain");
try {
REGISTRY = LocateRegistry.getRegistry(registryHost, registryPort);
INameserverRemote nameserverRemote = (INameserverRemote) REGISTRY.lookup(registryName);
nameserverRemote.registerNameserver(domain, new NameServerRemote());
} catch (RemoteException | NotBoundException e) {
e.printStackTrace();
} catch (InvalidDomainException e) {
e.printStackTrace();
} catch (AlreadyRegisteredException e) {
e.printStackTrace();
}
System.out.printf("Zone Nameserver %s started!%n", domain);
} }
} }