RMI "HalloServer" UnmarshalException

Status
Nicht offen für weitere Antworten.

boxi

Mitglied
Ich hab da mal das übliche Hello World in RMI geschrieben. Nur dass ich da einLaufzeitfehler bekomme. in der Linie reg.rebind("hallo", stub);

Code:
package HalloRMI;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;

public class HalloServer implements Hallo {
	
	private static final long serialVersionUID = 1L;

	private String serverHalloString = "";
	
	public HalloServer(){
		serverHalloString = "Hello World!";
	}
	
	public HalloServer(String srvStr){
		serverHalloString = srvStr;
	}
	
	public String getServerHallo() throws RemoteException {
		return serverHalloString;
	}

	public void setClientHallo(String cHallo) throws RemoteException {
		System.out.println("Client says: " + cHallo);
	}
	
	public static void main(String[] args){
		try{
			HalloServer srv = new HalloServer("Welcome to Neptun");
			Hallo stub = (Hallo) UnicastRemoteObject.exportObject(srv, 0);
			Registry reg = LocateRegistry.getRegistry();
			reg.rebind("hallo", stub);
			System.err.println("Halloserver online and bounded");
		}
		catch(Exception e){
			System.err.println("ServerErr: ");
			e.printStackTrace();
		}
	}

}

bekomme ich volgende Fehlermeldung:

ServerErr:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassCastException: java.io_ObjectStreamClass cannot be cast to java.lang.String
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:343)
at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
at HalloRMI.HalloServer.main(HalloServer.java:31)
Caused by: java.lang.ClassCastException: java.io_ObjectStreamClass cannot be cast to java.lang.String

Ich verstehe diese Meldung nicht ganz... wo liegt das problem?[/code]
 

Pulvertoastman

Bekanntes Mitglied
hmm...muss die Server Klasse nicht UNicastRemoteObject erweitern?

zudem würde ich nicht das Registry Onjekt zum rebind nehmen sondern java.rmi.Naming.rebin()

hth
 
G

Gast

Gast
Welche Implementierung der rmiregistry verwendest Du? Ich hatte gerade das selbe Problem mit der GNU Version auf meinem Debian System
> rmiregistry --version
rmiregistry (GNU libgcj) 4.1.2 20061020 (prerelease) (Debian 4.1.1-17)

Wenn ich die Implementierung in Sun's JDK (version 5.0.8) verwende, dann tritt der Fehler nicht auf.

Alex
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S ich bekomme immer java.rmi.UnmarshalException Netzwerkprogrammierung 10

Ähnliche Java Themen

Neue Themen


Oben