Running RMI to return a vector
I get the following error when trying to run IMServer2
C:\Users\Fred\workspace\451PA2>java IMServer2
Exception in thread "main" java.lang.AbstractMethodError: IMServer_Stub.loadVect
or()Ljava/util/Vector;
at IMServer2.main(IMServer2.java:233)
heres my file:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
import java.util.Vector;
public class IMServer2 extends UnicastRemoteObject implements IMServerInterface{
private static final long serialVersionUID = 1L;
public static final String IMServer1url = "//192.168.1.101/SERVER1";
public static Vector RegisteredList = new Vector();
FileOutputStream out;
PrintStream p;
FileInputStream in;
public IMServer2() throws RemoteException {
super();
}
public Vector loadVector(){
return RegisteredList;
}
//Save Data in RegisteredList Vector to a SavedState.txt in local directory
public void SaveState() throws FileNotFoundException {
out = new FileOutputStream("SavedState.txt");
p = new PrintStream(out);
for(int i=0;i<RegisteredList.size();i++){
p.println(((Registered) RegisteredList.elementAt(i)).getName()+ " "
+ ((Registered) RegisteredList.elementAt(i)).getPassword()+ " "
+ ((Registered) RegisteredList.elementAt(i)).getLoginStatus()+ " "
+ ((Registered) RegisteredList.elementAt(i)).getHostname()+ " "
+ ((Registered) RegisteredList.elementAt(i)).getPort());
}
p.close();
}
//Loads the SavedState.txt file from IMServer2
//public void LoadState() throws FileNotFoundException {
//?
//}
@SuppressWarnings("unchecked")
public String Register(String name, String pass) throws RemoteException, FileNotFoundException {
boolean found = false;
String response = "Unknown Error";
for (int i = 0; i >< RegisteredList.size(); i++) {
if (((Registered) RegisteredList.elementAt(i)).getName().equals(
name)) {
response = "Already Registered";
found = true;
}
}
if (found == false) {
Registered temp = new Registered(name, pass);
RegisteredList.addElement(temp);
response = "OK";
}
SaveState();
return response;
}
public String Unregister(String name, String password)
throws RemoteException, FileNotFoundException {
String response = "Unknown Error";
for (int i = 0; i < RegisteredList.size(); i++) {
if (((Registered) RegisteredList.elementAt(i)).getName().equals(
name)) {
if (((Registered) RegisteredList.elementAt(i)).getPassword()
.equals(password)) {
RegisteredList.removeElementAt(i);
response = "OK";
i=RegisteredList.size();
} else {
response = "Wrong Password";
i=RegisteredList.size();
}
} else {
response = "Not Registered";
}
}
SaveState();
return response;
}
public String ListRegistered() throws RemoteException {
int totalUsers = RegisteredList.size();
String response = String.valueOf(totalUsers) + " ";
for (int i = 0; i < RegisteredList.size(); i++) {
response = response
+ ((Registered) RegisteredList.elementAt(i)).getName()
+ " ";
}
return response;
}
public String ListActive() throws RemoteException {
String response = "";
int activeUsers = 0;
for (int i = 0; i < RegisteredList.size(); i++) {
if (((Registered) RegisteredList.elementAt(i)).getLoginStatus()) {
activeUsers =+ 1;
response = response
+ ((Registered) RegisteredList.elementAt(i)).getName()
+ " ";
}
}
response = String.valueOf(activeUsers) + " " + response;
return response;
}
public String ListName(String name) throws RemoteException {
boolean found = false;
boolean loggedIn = false;
String response = "";
for (int i = 0; i < RegisteredList.size(); i++) {
if (((Registered) RegisteredList.elementAt(i)).getName().equals(
name)) {
found = true;
if (((Registered) RegisteredList.elementAt(i)).getLoginStatus()) {
loggedIn = true;
response = ((Registered) RegisteredList.elementAt(i))
.getHostname()
+ " "
+ ((Registered) RegisteredList.elementAt(i))
.getPort();
}
}
}
if (found == false) {
response = "User not registered";
}
if (loggedIn == false) {
response = "User not logged in";
}
return response;
}
public String Login(String name, String password, String server, int port)
throws RemoteException, FileNotFoundException {
boolean found = false;
String response = "Unknown Error";
for (int i = 0; i < RegisteredList.size(); i++) {
if (((Registered) RegisteredList.elementAt(i)).getName().equals(
name)) {
found = true;
if (((Registered) RegisteredList.elementAt(i)).getLoginStatus()) {
response = "Already Logged In";
} else {
if (((Registered) RegisteredList.elementAt(i))
.getPassword().equals(password)) {
((Registered) RegisteredList.elementAt(i))
.setLoginStatus(true);
((Registered) RegisteredList.elementAt(i))
.setHostname(server);
((Registered) RegisteredList.elementAt(i))
.setPort(port);
response = "OK";
}
}
}
}
if (found == false) {
response = "Not Registered";
}
SaveState();
return response;
}
public String Logout(String name, String password) throws RemoteException, FileNotFoundException {
boolean found = false;
String response = "Unknown Error";
for (int i = 0; i < RegisteredList.size(); i++) {
if (((Registered) RegisteredList.elementAt(i)).getName().equals(
name)) {
found = true;
if (((Registered) RegisteredList.elementAt(i)).getLoginStatus()) {
if (((Registered) RegisteredList.elementAt(i))
.getPassword().equals(password)) {
((Registered) RegisteredList.elementAt(i))
.setLoginStatus(false);
((Registered) RegisteredList.elementAt(i)).setPort(0);
((Registered) RegisteredList.elementAt(i))
.setHostname(null);
response = "OK";
} else {
response = "Wrong Password";
}
} else {
response = "Not Logged In";
}
}
}
if (found == false) {
response = "Not Registered";
}
SaveState();
return response;
}
public static void main(String args[]) throws FileNotFoundException {
try {
// create a local instance of the object
IMServer2 server1 = new IMServer2();
// put the local instance in the registry
Naming.rebind("SERVER2", server1);
//Retrieve vector from IMServer2
try {
IMServerInterface servertemp = (IMServerInterface) Naming
.lookup(IMServer1url);
RegisteredList = ((IMServerInterface) servertemp).loadVector();
} catch (RemoteException e) {
System.out.println("Error in lookup: " + e.toString());
} catch (java.net.MalformedURLException e) {
System.out.println("Malformed URL: " + e.toString());
} catch (java.rmi.NotBoundException e) {
System.out.println("NotBound: " + e.toString());
}
System.out.println("Server Ready");
} catch (java.net.MalformedURLException me) {
System.out.println("Malformed URL: " + me.toString());
}
catch (RemoteException re) {
System.out.println("Remote exception: " + re.toString());
}
}
}

