Witam, mam taki problem z który nie mogę się uporać, mianowicie chodzi mi o przesłanie obiektów posiadających więcej niż jedno pole z servera do klienta w modelu programowania rozproszonego RMI Java, tak żebym na kliencie mógł z osobna odczytać że np: pole imie ma wartość "Janek", nazwisko "Kowalski" itd, nie chodzi mi o jeden string. Próbowałem zapisać obiekty do ArrayList a potem dostać się do nich z poziomu klienta ale nic z tego. Bardzo proszę Was o pomoc, gdyż jetem początkującym jeśli chodzi o jave.
Może podam przykład żeby lepiej zobrazować problem:
Server class:
public class serverC extends UnicastRemoteObject implements testRMI {
private static final long serialVersionUID = 1L;
protected serverC() throws RemoteException {}
public static void main(String[] args) throws RemoteException {
try
{
LocateRegistry.createRegistry(2025);
serverC sc = new serverC();
Naming.bind("//localhost:2025/Server", sc);
}
catch (MalformedURLException e)
{
e.printStackTrace();
} catch (AlreadyBoundException e) {
e.printStackTrace();
}
System.out.println("Server ruszył ....");
System.out.println();
}
public class marcin extends UnicastRemoteObject
{
private static final long serialVersionUID = 1L;
public int imie;
public String nazwisko;
public marcin (int i, String n) throws RemoteException
{
imie = i;
nazwisko = n;
}
}
public ArrayList<marcin> ListaC() throws RemoteException {
ArrayList<marcin> lista = new ArrayList<marcin>();
marcin jakis = new marcin( 1,"alan");
marcin jaki = new marcin( 2,"kotek");
lista.add(jakis);
lista.add(jaki);
return lista;
}
}
Interface class:
// pomijam importowane klasy
public interface testRMI extends Remote {
ArrayList<marcin> ListaC() throws RemoteException;
}
Klient class:
public class clientC {
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
String name = "//localhost:2025/Server";
testRMI tr = (testRMI) Naming.lookup(name);
try{
System.out.println( tr.ListaC().get(0).nazwisko);
}
catch(Exception e)
{
System.out.println("Wystapil błąd");
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
Gdyby był ktoś w stanie mi pomóc byłbym zobowiązany :) Oczywiście inne rozwiązania tego problemu jak najbardziej mile widziane.
Dziękuje i pozdrawiam.