2015-04-23 1 views
1

Вот мой код:

public class PeerNode extends UnicastRemoteObject implements PeerInterface { 

    private PeerInterface joint; 
    private List<PeerNode> neighbours; 
    public PeerNode(String s, int idnumber) throws IOException { 
     PeerNode.setNome(s); 
     PeerNode.setKey(idnumber); 
     this.neighbours = new ArrayList<>(); 
     System.out.println("Peer node initialized"); 
     System.out.println(this); 
    } 

    public void contactExistingNode(String node) throws Exception, RemoteException, NotBoundException { 
     System.out.println("I know the peer "+ node); 
     System.out.println("I try to join automatically the network"); 
     joint = (PeerInterface) registry.lookup(node); 
     joint.joinNetwork(this); 
    } 

И это интерфейс:

public interface PeerInterface extends Remote { 

    public void joinNetwork(PeerNode p) throws RemoteException; 

} 

Пытаюсь передать объект удаленному партнеру ... и на этой линии

joint.joinNetwork(this); 

у меня есть эта ошибка:

Exception in thread "main" java.lang.IllegalArgumentException: argument type mismatch 
... 
at com.sun.proxy.$Proxy0.joinNetwork(Unknown Source) 
at com.server.PeerNode.contactExistingNode(PeerNode.java:41) 
at com.server.Main.main(Main.java:51) 

Я уже выбрал это как PeerInterface, PeerNode ... но он не работает. Кто-нибудь может мне помочь? Это класс, который получить объект

public void joinNetwork(PeerNode p) throws RemoteException { 
    neighbours.add(p); 
} 
+0

Что делать, если вы изменили метод на public void joinNetwork (PeerInterface p), выдает RemoteException? – StanislavL

+0

У меня такая же ошибка – Enrico

ответ

0

Клиент не имеет экземпляр удаленного объекта. Он имеет экземпляр удаленного интерфейса. Подпись удаленного метода должна быть

void joinNetwork(PeerInterface peer) throws RemoteException; 

Исправьте удаленный интерфейс, удаленный объект и ваш клиент; область; перераспределять; и повторный тест.

+0

Привет. Спасибо за ответ ... Они помогают мне, и я это исправил. Я уже пытался это сделать, но это не сработало, пока я не изменил это: private List соседи; – Enrico