Ahojte, fakt jsem zvědav jeslti mi s tím někdo pomůže. Na http://stackoverflow.com/ jsem ten problem či jeho řešení nenalezl.
1) Takže abych to zkrátil nejde mi přenést přes RMI strukturovany datovy typ(objekt) a pole Objektu ze serveru do klienta. Primitivní datové typy či pole primitivních datových typů tímto způsobem přenést jdou, dokonce jsem takto přenesl i objekt typu java.util.Date. Ale mmou vytvořiný objekt se přenést nedá. ( samozřejmě na localhostu)
2) existuje nějaký způsob jak zastavit kod serveru dokud se třeba na klientu neprovede nějaký výpočet? Po změně proměnné v RMI by se to rozběhlo zase dál(kromě: nekonecny cyklus while(true) ... ten zbytecne zabere vykon na serveru, Thread,Runnable... tím to taky nechci řešit )
Zde je rozhrani :
public interface B03_InterfaceStruktTypy extends java.rmi.Remote{
public ObjektHod getObjekt() throws java.rmi.RemoteException;
public ObjektHod [] getPoleObjekt() throws java.rmi.RemoteException;
}
Zde je objekt který chci přenést :
class ObjektHod implements Serializable{
private static final long serialVersionUID = -1138997011926352232L;
private int cislo1,cislo2,cislo3;
public int getCislo1(){ return cislo1;}
public int getCislo2(){ return cislo2;}
public int getCislo3(){ return cislo3;}
ObjektHod(int cis1,int cis2,int cis3) throws RemoteException{
this.cislo1=cis1;this.cislo2=cis2;this.cislo3=cis3; }
}
Zde je objekt RMI :
class DatoveTypySloz extends UnicastRemoteObject implements B03_InterfaceStruktTypy,Serializable {
private static final long serialVersionUID = 511721113178017596L;
protected DatoveTypySloz() throws RemoteException {
super(); }
private ObjektHod objekt = new ObjektHod(351,899,16);
private ObjektHod [] poleObjekt = {new ObjektHod(31,89,156),new ObjektHod(3,9,186),new ObjektHod(3,99,76)};
public ObjektHod getObjekt() { return objekt; }
public ObjektHod [] getPoleObjekt() { return poleObjekt;}
}
Zde je server RMI:
public class B04_Server {
public static void main(String [] args) {
DatoveTypySloz im=null;
try {
im = new DatoveTypySloz(); }
catch (RemoteException e1) {
e1.printStackTrace(); }
System.out.println("RMI Server startuje...");
try {
Naming.bind("Info", im);
System.out.println("Provedena instrukce"); }
catch (RemoteException e1) {
e1.printStackTrace();
System.err.println(e1);
System.exit(1); }
catch (MalformedURLException e1) {
e1.printStackTrace();
System.err.println(e1);
System.exit(1); }
catch (AlreadyBoundException e) {
e.printStackTrace();
System.err.println(e);
System.exit(1); }
System.out.println("RMI Server ready."); }
}
Zde je klient RMI :
public class B05_Klient {
private static B03_InterfaceStruktTypy rmiObjekt = null;
public static void main(String [] args){
ObjektHod objekt;
ObjektHod [] poleObjekt;
try {
rmiObjekt = (B03_InterfaceStruktTypy)Naming.lookup("Info"); }
catch (Exception e) {
System.err.println("RemoteDate exception: " + e.getMessage( ));
e.printStackTrace( ); }
System.out.println("\nVypiseme strukturovane datove typy :");
try {
objekt = (ObjektHod)rmiObjekt.getObjekt(); }
catch (RemoteException e) {
e.printStackTrace(); } }
}