I am trying to test out RMI of java, but i cannot get the rmic command to work.
Do tell if you need my code, although i am pretty sure it does not matter, i have implemented the RMI functions correctly.
Server Side Code:
public static void main(String[] args)
{
try {
Registry r = LocateRegistry.getRegistry();
r.bind("RService", new RSimpl());
}
catch (Exception ex) {
ex.printStackTrace();
System.out.println("Cannot Start Remote Service");
}
System.out.println("Remote Service Is Running");
}
Client Side Code:
@SuppressWarnings("deprecation")
public Object[] getServiceList()
{
boolean connectionsuccess = false;
Object[] objList = null;
try {
System.setSecurityManager(new RMISecurityManager());
server = (RemoteService) Naming.lookup("rmi://192.168.1.77/RService");
connectionsuccess = true;
}
catch(Exception ex) {
Object[] options = {"Retry","Cancel"};
int o = JOptionPane.showOptionDialog(frame, "Cannot Establish Connection To The Server. \n Do You Want To Retry?", "Connection Error", JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, options, options[0]);
if(o==0)
{
i=0;
attemptConnect();
}
else
{
i=1;
return error;
}
}
}
RSimpl.java:
package testrmi;
import java.rmi.*;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.*;
import java.util.*;
public class RSimpl extends UnicastRemoteObject implements RemoteService {
HashMap map;
public RSimpl() throws RemoteException
{
setUpServices();
}
public void setUpServices()
{
map = new HashMap();
map.put("Dice Roll Service", new DiceRoll());
map.put("Calculator Service", new Calculator());
// Keep Adding Services On The Go!
}
public Object[] getServiceList()
{
return map.keySet().toArray();
}
public Service getService(Object SvcKey)
{
Service theService = (Service) map.get(SvcKey);
return theService;
}
public static void main(String[] args)
{
try {
Registry r = LocateRegistry.getRegistry();
r.bind("RService", new RSimpl());
}
catch (Exception ex) {
ex.printStackTrace();
System.out.println("Cannot Start Remote Service");
}
System.out.println("Remote Service Is Running");
}
}
RemoteService.java (interface):
package testrmi;
import java.rmi.*;
public interface RemoteService extends Remote {
public Object[] getServiceList() throws RemoteException;
public Service getService(Object SvcKey) throws RemoteException;
}
Seems like the file can't be found in this case. Try typing dir in the cmd to see if your folder is there. You can also navigate into the testrmi folder and type rmic RSimpl.
If it still doesn't work try copying the files you need into a folder on desktop, navigate there and test.