# RMI Fehlermeldung



## Flyer (25. Aug 2004)

hi!

ich versuche eine RMI-Programm zu schreiben, doch es gibt mir immerfolgende Meldung beim ausführen:
java.rmi.ServerException: Server RemoteException; nested exception is:
        java.rmi.AccessException: Registry.rebind localhost.swisslife.ch/127.0.0
.1 != NT4257/134.38.4.227

hier die klassen:
-->diese führe ich aus

```
import java.rmi.*;

public class TimeServiceRegistration
{
  public static void main(String[] args)
  {
    System.setSecurityManager(new RMISecurityManager()); 
    try {
      TimeServiceImpl tsi = new TimeServiceImpl();
      Naming.rebind("TimeService", tsi);
      System.out.println("Done register");
    } catch (Exception e) {
		System.err.println("TimerServiceRegister:"+e.toString());
      System.exit(1);
    }
  }
}
```

--> diese wird in der anderen Klasse erstellt:

```
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;
  }
}
```

danke für eure antwort!

Gruss Flyer


----------



## foobar (25. Aug 2004)

Versuchs mal hiermit:

```
import java.rmi.*;

public class TimeServiceRegistration
{
  public static void main(String[] args)
  {
    System.setSecurityManager(new RMISecurityManager());
    try {
      TimeServiceImpl tsi = new TimeServiceImpl();
      LocateRegistry.createRegistry(Registry.REGISTRY_PORT);M
      Naming.rebind("TimeService", tsi);
      System.out.println("Done register");
    } catch (Exception e) {
      System.err.println("TimerServiceRegister:"+e.toString());
      System.exit(1);
    }
  }
}
```
Erbt das Interface TimeService auch von Remote?


----------



## Flyer (25. Aug 2004)

ja TimeService erbt auch von Remote...wenn ich deinen Code ausführe gibt es neue Fehler:

TimerServiceRegister:java.rmi.UnmarshalException: Error unmarshaling return header; nested exception is: 
	java.io.EOFException
java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:3368 accept,resolve)
	at java.security.AccessControlContext.checkPermission(Unknown Source)
	at java.security.AccessController.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkAccept(Unknown Source)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.checkAcceptPermission(Unknown Source)
	at sun.rmi.transport.tcp.TCPTransport.checkAcceptPermission(Unknown Source)
	at sun.rmi.transport.Transport$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.rmi.transport.Transport.serviceCall(Unknown Source)
	at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)


----------



## foobar (25. Aug 2004)

Entfern mal den SecurityManager oder leg eine Policy an :http://www.dpunkt.de/java/Programmieren_mit_Java/Sicherheit/8.html


----------



## Flyer (25. Aug 2004)

DANK...jetzt gehts...aber warum gibt es das problem mit dem security manager...mann kann doch die java.policy datei anpassen...oder nicht?


----------

