# Java RMI Berechtigung



## DaniSahne (14. Okt 2008)

Moinsen, kleines Problem bei einem Versuch RMI zu nutzen. Mir fehlt die Berechtigung den Server zu starten. Wie binde ich das in die Java Datei mit ein?
"access denied (java.net.SocketPermission 127.0.0.1:12346 connect,resolve)" kommt als Antwort.



```
package Network;

import java.rmi.Naming;
import java.rmi.RMISecurityManager;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

import Network.ServerInterface;

// 1
public class Server extends UnicastRemoteObject implements ServerInterface
{
	

private static final long serialVersionUID = 1L;

public Server() throws RemoteException
  {
  }

  public static void main(String[] args)
  {
	  
    System.setSecurityManager(new RMISecurityManager());
    try
    {
      Server server = new Server();
      Naming.bind("rmi://127.0.0.1:12346/server", server);
    }
    catch(Exception ex)
    {
      System.out.println(ex.getMessage());
    }
  }

  public int summieren(int a, int b) throws RemoteException
  {
    return (a + b);
  }
}
```

und 


```
package Network;

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface ServerInterface extends Remote
{
  int summieren(int a, int b) throws RemoteException;
}
```


----------



## Marco13 (14. Okt 2008)

Man muss wohl eine Policy file erstellen, wo die passenden Permissions drinstehen. Schau mal hier http://java.sun.com/j2se/1.4.2/docs/guide/rmi/getstart.doc.html bei "Start the server".


----------



## DaniSahne (15. Okt 2008)

Hallo, danke fuer die Antwort. Vom Prinzip her hab ichs wohl verstanden, kann mit der Quelle aber nicht ganz so viel anfangen. Also ich erstelle eine Datei nenne die meinetwegen bla.policy und da drin steht dann alles was erlaubt ist(grant{...). 
Wie lade ich die Datei in mein Java Programm rein? Kann man das ganze nicht auch schon innerhalb vom Programmcode verankern, also ohne extra Datei?

Danke!!


----------



## Marco13 (16. Okt 2008)

Man kann dann am Anfang
System.setProperty("java.security.policy", "bla.policy");
aufrufen. 

Vielleicht kann man das sogar irgendwie direkt im Programm machen. Würde mich aber wundern, weil ... es ziemlich sinnlos wäre, wenn ein Programm _sich selbst_ beliebige Rechte geben könnte........


----------



## tuxedo (16. Okt 2008)

Ist das dann nicht so, dass man nicht zur Laufzeit die Property setzen kann/darf/sollte, sondern gleich beim Start der JVM? Also mit -Djava.security.policy=bla.policy ??

Würde auf 

>> es ziemlich sinnlos wäre, wenn ein Programm sich selbst beliebige Rechte geben könnte........

durchaus Sinn machen wenn es nur so ginge.

- Alex


----------

