Przesyłanie obiektów składających się z kilku pól w modelu RMI Java.

0

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.

0

Klasa marcin musi implementować interfejs który implementuje java.rmi.Remote.
Metody wystawione przez ten interfejs będą dostępne po stronie klienta.

1 użytkowników online, w tym zalogowanych: 0, gości: 1