RMI - skompilowanie klasy serwera

0

Witam.
Nie bardzo umiem sobie poradzić z podstawowym użyciem RMI. Pomijając fakt uruchomienia rmiregistry, mam problem nawet ze skompilowaniem klasy. Opierałam się na różnych samouczkach znalezionych w internecie ale niewiele mi pomogły. Pewnie zostanę skrytykowana za brak podstawowej wiedzy, ale trudno.

 package rmi;

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


public class Testowa  extends UnicastRemoteObject implements ITestowa {

    private static final long serialVersionUID = 1L;


    public Testowa() throws RemoteException {
        super();
    }

    public static void main(String[] args) {
        System.setSecurityManager(new RMISecurityManager());
        try {
            Testowa obj1= new Testowa();
            Naming.bind("rmi://localhost:1099/Testowa",obj1);
            
        } catch (RemoteException e) {
        
            e.printStackTrace();
        }
        
    }

Problem pojawia się przy metodzie bind: <quote> Exception in thread "main" java.security.AccessControlException: access denied ("java.net.SocketPermission" "127.0.0.1:1099" "connect,resolve")</quote

0

Na pewno masz problem z kompilacją, a nie z uruchomieniem? Dodaj w pliku java.policy wiersz

permission java.net.SocketPermission "localhost:1024-", "listen";
0

Niestety nie pomogło... Ale to racja, źle myślałam problem z tym połączeniem, ale nie mam pojęcia jak to zrobić.

0

Mądrość ze stackoverflow:

Don't use a security manager unless
(i) you know you need one
and
(ii) you have written an appropriate .policy file

Serwer:

Registry reg = LocateRegistry.createRegistry(1099);
reg.rebind("cokolwiek", new Testowa());

Klient

Registry reg = LocateRegistry.getRegistry("localhost", 1099);
ITestowa klient = (ITestowa)reg.lookup("cokolwiek");

1 użytkowników online, w tym zalogowanych: 0, gości: 1