Test RMI.

macsx

Mitglied
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:

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
 
Würde mich auch interessieren, da ich das gleiche Problem habe. Ich hatte auch schon in der java.policy alle Rechte gegeben, was aber nichts genützt hat.
 
Sers!

Ich glaub dass ich mein Problem gefunden hab. Ich habe als Internetanbieter Tele2 UTa und von denen hab ich eine "feste" IP, auch wenn ich den Rechner neustarte. Nur wenn ich mein Modem ausschalte und es dann neueinwählen lasse bekomm ich eine neue IP! Aber das Modem läuft normalerweise nonstop.

Wenn ich nun meine IP lokalisieren lasse wird mir immer nur mein Einwahlknoten gezeigt. Also komm ich mit meiner IP nicht auf meiner Rechner zurück
 

Neue Beiträge

Zurück