hi folks,
wie kann ich denn mit RMI objekte der implementierenden klasse übergeben?
also mal ein beispiel um das problem zu verdeutlichen:
interface:
implementierende klasse:
jetzt will ich aber nicht nur eine methode mit rückgabewert benutzen, sondern will ein ganzes car-objekt zurückhaben, so daß ich auch zb setCar und showCar ausführen kann (die ja eigentlich keinen rückgabewert haben... ich hab denen mal int gegeben, weils halt das iface verlangt hat)...
wie kann ich das machen? habs mal mit marshalledobject probiert aber ich weiß nicht ob das der richtige weg ist...
viele grüße
stephan
wie kann ich denn mit RMI objekte der implementierenden klasse übergeben?
also mal ein beispiel um das problem zu verdeutlichen:
interface:
Code:
package examples.car;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface carIFace extends Remote {
int setCar() throws RemoteException;
int showCar() throws RemoteException;
}
implementierende klasse:
Code:
package examples.car;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.RMISecurityManager;
//import java.rmi.MarshalledObject;
import java.rmi.server.UnicastRemoteObject;
import java.io.*;
public class carImpl extends UnicastRemoteObject implements carIFace{
String carName;
String topV;
public carImpl() throws RemoteException
{
super();
}
public int setCar()
{
System.out.println("Name:");
try
{
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
carName = input.readLine();
System.out.println("Top Speed:");
topV = input.readLine();
return 0;
}
catch (Exception e)
{
System.out.println("Input Error");
return -1;
}
}
public int showCar()
{
System.out.println("Name: " + carName);
System.out.println("Top V: " + topV);
return 0;
}
public static void main(String[]args)
{
if(System.getSecurityManager() == null)
{
System.setSecurityManager(new RMISecurityManager());
}
try
{
carImpl a_object = new carImpl();
Naming.rebind("//localhost/CarServer", a_object);
System.out.println("CarServer is now registered");
}
catch (Exception e)
{
System.out.println("Unable to register CarServer");
}
}
}
jetzt will ich aber nicht nur eine methode mit rückgabewert benutzen, sondern will ein ganzes car-objekt zurückhaben, so daß ich auch zb setCar und showCar ausführen kann (die ja eigentlich keinen rückgabewert haben... ich hab denen mal int gegeben, weils halt das iface verlangt hat)...
wie kann ich das machen? habs mal mit marshalledobject probiert aber ich weiß nicht ob das der richtige weg ist...
viele grüße
stephan