Cast Exception bei einfachem RMI Beispiel

auxilium

Mitglied
Hallo zusammen,

Versuche mich gerade an meiner ersten RMI-Anwendung, bekomme allerdings eine Fehlermeldung.
Es soll ein einfaches Pong werden, bei dem ich eine Nachricht an ein anderes Objekt aus einer anderen VM geben möchte.

Mein Interface:

Java:
package example;

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


public interface PongInterface {
	
	void pong(String message, String sender);

}



Java:
package example;
import java.rmi.*;
import java.rmi.registry.*;
import java.rmi.server.*;
import java.net.*;

 
public class RMIServer extends java.rmi.server.UnicastRemoteObject
implements PongInterface
{
    int      thisPort;
    String   name;
    Registry registry;    // rmi registry for lookup the remote objects.
 
  
 
    public RMIServer() throws RemoteException
    {	name = "Pongmaster";
    	thisPort=3232;
       
        try{
        registry = LocateRegistry.getRegistry(thisPort);
        int pongfreunde = registry.list().length;
        pongfreunde++;
        name += pongfreunde;
        
        registry.rebind(name, this);
            System.out.println(name+" is also online");
        }
        catch(RemoteException e){
        	 try {
				registry = LocateRegistry.createRegistry( thisPort );
			    registry.rebind(name, this);
				 System.out.println("Pongmaster is online");
			} catch (Exception e1) {
				e1.printStackTrace();
			}
        }
    }
   
    static public void main(String args[])
    {
        try{
        RMIServer s=new RMIServer();
        String[] pongfreunde = s.registry.list();
        if(pongfreunde.length>1){
        PongInterface pongfriend = (PongInterface) s.registry.lookup("Pongmaster");
        pongfriend.pong("Ping", s.name);
    }}
    catch (Exception e) {
           e.printStackTrace();
           System.exit(1);
    }
     }

	@Override
	public void pong(String message, String sender) {
		System.out.println("Thanks "+sender +"for "+message);
		
		
	}
}

Programm versucht eine Registry zu finden und das Objekt dann dort zu registrieren.
Wenn es keine findet, wird eine neue gestartet und das Objekt dann dort registriert.
Wenn dann 2 Objekte in der Registry sind, soll das letzte Objekt die Funktion vom Objekt pongmaster aufrufen.
Allerdings bekomme ich beim casten dann die Meldung:
java.lang.ClassCastException: $Proxy0 cannot be cast to example.PongInterface

Alle Klassen sind im selben Package und im selben Projekt.

Kann mir das nicht ganz erklären.

Jemand da eine Ahnung?
 

BuckRogers

Bekanntes Mitglied
probier mal:

Java:
public interface PongInterface extends Remote{
     void pong(String message, String sender) throws RemoteException;
 
}

Bitte um Rückmeldung ob das PRoblem gelöst ist oder nicht ;)
 

auxilium

Mitglied
:-D genau das war der Fehler.
Habe beim Verändern des Interfaces vergessen von Remote zu erben und die Exception zu berücksichtigen.
Danke!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Object Cast Problem nach Übertragung mit Log4j Netzwerkprogrammierung 5
G RMI - $Proxy0 cannot be cast to - Trennung von Client/Server Netzwerkprogrammierung 1
M RMI, cast funktioniert nich Netzwerkprogrammierung 2
K Rmi ClassCastException $Proxy0 cannot be cast Netzwerkprogrammierung 2
T Webserviceaufruf verursacht eine Exception Netzwerkprogrammierung 3
R Socket FATAL EXCEPTION MAIN bei Socket based client/server app Netzwerkprogrammierung 2
D Exception Handling bei In/Outputsockets in eigenen Threads Netzwerkprogrammierung 1
M Socket Exception tritt auf - weiß nicht weiter Netzwerkprogrammierung 3
K Socket Exception Connection reset Netzwerkprogrammierung 9
C ObjectInputReader wirft beim zweiten Aufruf eine Exception Netzwerkprogrammierung 3
M Socket TCP keep alive Exception wird nicht ausgelöst Netzwerkprogrammierung 11
G Exception: Connection reset by peer: socket write error Netzwerkprogrammierung 2
A Socket Socket Verbindung unterbrochen --> keine Exception Netzwerkprogrammierung 7
H Socket Closed Exception verhindern Netzwerkprogrammierung 3
M RMI unmarshaling exception ??? Netzwerkprogrammierung 2
D Socket Streams schliessen .. Exception gewollt? Netzwerkprogrammierung 4
K Socket Socket Exception Netzwerkprogrammierung 3
eQuest RMI Unserializable Exception Netzwerkprogrammierung 4
F Bekomme NoSuchElement Exception Netzwerkprogrammierung 5
S RMI Exception Netzwerkprogrammierung 2
T rmi ssl zu große Objekte übergeben -> Exception Netzwerkprogrammierung 10
clupus Exception beim Schließen eines Sockets Netzwerkprogrammierung 6
G Exception javax.naming.CommunicationException Netzwerkprogrammierung 16
G Nullpointer Exception - Multithreading Netzwerkprogrammierung 25
G XML-RPC -> Exception $Proxy0-Unknown Source-No such handl Netzwerkprogrammierung 8
T Exception serialisieren? Netzwerkprogrammierung 5
K öffnen des socket schlägt fehl -> ABER: keine exception . Netzwerkprogrammierung 2
M ois nicht null, aber ois.getObject liefer exception Netzwerkprogrammierung 3
R ObjectOutput- / ObjectInputStream Exception? Netzwerkprogrammierung 2
D EA-Exception Network Adapter macht probleme Netzwerkprogrammierung 2
F Java Mail . Exception java.lang.NoClassDefFoundError Netzwerkprogrammierung 2
M Exception in thread "main" java.lang.NoClassDefFou Netzwerkprogrammierung 2
J JavaMail Exception bei senden an anderen Server. Netzwerkprogrammierung 8
M schreiben auf geschlossenen Socket ohne Exception Netzwerkprogrammierung 6
R LINUX: getHostAddress() und getHostName() werfen Exception Netzwerkprogrammierung 6
8 PrintWriter Exception Netzwerkprogrammierung 3
D socket exception + timing probleme Netzwerkprogrammierung 2
A Exception bei Cookie lesen Netzwerkprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben