Sers!
Ich probiere mich gerad mit RMI. Versuche es nur lokal abzuwickeln.Also Server und Client auf localhost.Habe als Vorlage das Javabuch5 bei der Hand.
kurze Schilderung:
Habe das Remote-Interface in Form von:
Die Implemntierung des Interfaces:
Dann rufe ich"rmic testpackage.TimeServiceImpl" auf. Dann folgt noch der Aufruf von "rmiregistry" und das lass ich die ganze Zeit über laufen. Soweit so gut.
Dann folgt die Registration des Remote-Objekts in Form von:
Und nun kommts: Wenn ich das Programm aufrufe bekomm ich folgende Medlung:
"java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:1009 connect,resolve)"
Also das Problem scheint bei Naming.rebind("TimeService", tsi") zu entstehen.
Leider weiß ich nicht wie ich hier einen Zugriff verweigere bzw. erlauben kann.
Habs auch schon mit Varainten wie:
rmiregistry 1009 in Verbindung mit Naming.rebind("rmi://localhost:1009/TimeService", tsi); oder
rmiregistry in Verbidung mit Naming.rebind("rmi://localhost/TimeService", tsi);
Alles das selbe Ergebnis.
Vielleicht weiß ja wer die Lösung!!
Gruß und Dank macsx
Ich probiere mich gerad mit RMI. Versuche es nur lokal abzuwickeln.Also Server und Client auf localhost.Habe als Vorlage das Javabuch5 bei der Hand.
kurze Schilderung:
Habe das Remote-Interface in Form von:
Code:
package testpackage;
/* TimeService.java */
import java.rmi.*;
import java.util.*;
public interface TimeService
extends Remote
{
public String getTime()
throws RemoteException;
public TimeStore storeTime(TimeStore store)
throws RemoteException;
}
Die Implemntierung des Interfaces:
Code:
package testpackage;
/* TimeServiceImpl.java */
import java.rmi.*;
import java.rmi.server.*;
import java.util.*;
public class TimeServiceImpl
extends UnicastRemoteObject
implements TimeService
{
public TimeServiceImpl()
throws RemoteException
{
}
public String getTime()
throws RemoteException
{
GregorianCalendar cal = new GregorianCalendar();
StringBuffer sb = new StringBuffer();
sb.append(cal.get(Calendar.HOUR_OF_DAY));
sb.append(":" + cal.get(Calendar.MINUTE));
sb.append(":" + cal.get(Calendar.SECOND));
return sb.toString();
}
public TimeStore storeTime(TimeStore store)
throws RemoteException
{
store.setTime(getTime());
return store;
}
}
Dann rufe ich"rmic testpackage.TimeServiceImpl" auf. Dann folgt noch der Aufruf von "rmiregistry" und das lass ich die ganze Zeit über laufen. Soweit so gut.
Dann folgt die Registration des Remote-Objekts in Form von:
Code:
package testpackage;
/* TimeServiceRegistration.java */
import java.rmi.*;
import java.util.*;
public class TimeServiceRegistration
{
public static void main(String[] args)
{
System.setSecurityManager(new RMISecurityManager());
try {
System.out.println("Registering TimeService");
TimeServiceImpl tsi = new TimeServiceImpl();
Naming.rebind("TimeService", tsi);
System.out.println(" Done.");
} catch (Exception e) {
System.err.println(e.toString());
System.exit(1);
}
}
}
Und nun kommts: Wenn ich das Programm aufrufe bekomm ich folgende Medlung:
"java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:1009 connect,resolve)"
Also das Problem scheint bei Naming.rebind("TimeService", tsi") zu entstehen.
Leider weiß ich nicht wie ich hier einen Zugriff verweigere bzw. erlauben kann.
Habs auch schon mit Varainten wie:
rmiregistry 1009 in Verbindung mit Naming.rebind("rmi://localhost:1009/TimeService", tsi); oder
rmiregistry in Verbidung mit Naming.rebind("rmi://localhost/TimeService", tsi);
Alles das selbe Ergebnis.
Vielleicht weiß ja wer die Lösung!!
Gruß und Dank macsx