Hallo Leute!
Ich habe eine kleine RMI-Anwendung programmiert. Jetzt möchte ich eigene Klassen definieren und Objekte dieser Klasse als Rückgabewerte übergeben.
Sowohl auf dem Server als auch auf dem Client habe ich einfach die Klasse definiert. Ich kann Innerhalb des Servers auf die Objekte und die die zugehörigen Methoden problemlos zugreifen.
Wenn ich aber auf dem Client auf die Methode "WERT.AUTO" des Servers zugreifen will, gibt es als Rückgabewert nur ein "NULL".
Server:
Client:
Sowohl Client als auch Server haben die folgende Klasse im Ordner /src
Was mache ich falsch?
Ich habe eine kleine RMI-Anwendung programmiert. Jetzt möchte ich eigene Klassen definieren und Objekte dieser Klasse als Rückgabewerte übergeben.
Sowohl auf dem Server als auch auf dem Client habe ich einfach die Klasse definiert. Ich kann Innerhalb des Servers auf die Objekte und die die zugehörigen Methoden problemlos zugreifen.
Wenn ich aber auf dem Client auf die Methode "WERT.AUTO" des Servers zugreifen will, gibt es als Rückgabewert nur ein "NULL".
Server:
Java:
import java.rmi.*;
public interface SampleServer extends Remote
{
public mv WERT (int zeile) throws RemoteException;
}
Java:
import java.rmi.*;
import java.rmi.server.*;
import java.rmi.registry.*;
public class SampleServerImpl extends UnicastRemoteObject implements SampleServer
{
SampleServerImpl() throws RemoteException{ super(); }
public mv WERT (int zeile) throws RemoteException{
mv rueckgabe = null;
rueckgabe.AUTO="22";
System.out.println(rueckgabe.AUTO); // Ausgabe ist ok : 22
return rueckgabe;
}
public static void main(String args[]) {
//set the security manager
try {
// System.setSecurityManager(new RMISecurityManager());
SampleServerImpl Server = new SampleServerImpl();
LocateRegistry.createRegistry(1080);
Naming.rebind("SAMPLE-SERVER" , Server);
System.out.println("Server waiting.....");
}
catch (java.net.MalformedURLException me){System.out.println("Malformed URL: " + me.toString());}
catch (RemoteException re){ System.out.println("Remote exception: " + re.toString()); }
}
}
Client:
Java:
import java.rmi.*;
public interface SampleServer extends Remote
{
public mv WERT (int zeile) throws RemoteException;
}
Java:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.rmi.Naming;
import java.rmi.RemoteException;
public class Client extends Applet {
public void main () {
try
{
System.out.println("Security Manager loaded");
String url = "//192.168.1.191/SAMPLE-SERVER";
SampleServer remoteObject = (SampleServer)Naming.lookup(url);
System.out.println("Got remote object");
System.out.println(remoteObject.WERT(0).AUTO); // VERFLIXT: HIER WIRD NUR "NULL" AUSGEGEBEN.
}
catch (RemoteException exc) { System.out.println("Error in lookup: " + exc.toString()); }
catch (java.net.MalformedURLException exc) { System.out.println("Malformed URL: " + exc.toString()); }
catch (java.rmi.NotBoundException exc) { System.out.println("NotBound: " + exc.toString()); }
} //main
}
Sowohl Client als auch Server haben die folgende Klasse im Ordner /src
Java:
class mv
{
static String AUTO;
static String FAHRER;
}
Was mache ich falsch?