Diky za tip,
zkousel jsem tomu pridavat nejaka rozhrani a predky...
a takhle se zda ze to funguje...
hlavne to chtelo zrejme pridat UnicastRemoteObject,
----------------
Objekt:
public class Objekt1Implementation extends UnicastRemoteObject implements
Objekt1Interface, Remote
protected Objekt1Implementation(int port) throws RemoteException {
super(port);
}
---------------
Metoda getujici objekt:
@Override
public
Objekt1Interface getObjekt1() {
return (Objekt1Interface ) new Objekt1Implementation(port);
}
Subject: RE: RMI - Facade
Date: Mon, 30 Mar 2009 10:56:50 +0200
From: [email protected]
To: [email protected]
Zdravim,
Uz je
to nejaky ten patek co jsem naposledy delal s RMI, ale myslim ze by melo stacit
pridat implements java.rmi.Remote (k tomu
Objekt1Impl).
Ovsem
nevylucuji, ze bude nutne provest jeste nejake dalsi figle.
Kamil
Podlesak
-----Original Message-----
From:
[email protected] [mailto:[email protected]]on Behalf Of
Lukáš Kinc
Sent: Saturday, March 28, 2009 9:00 PM
To:
[email protected]
Subject: RMI -
Facade
Zdravim,
vytvarim aplikaci klient-server s
pouzitim RMI a abych nemel desitky metod na vystavenem rozhrani, chtel jsem
tyto metody zaobalit do objektu a volat je az pres ne:
public class
TridaImplementation extends UnicastRemoteObject implements
Trida{
public
TridaImplementation(int port) throws RemoteException{
super(port);
}
@Override
public
Objekt1Interface getObjekt1() {
return (Objekt1Interface ) new Objekt1Implementation();
}
@Override
public void getObjekt2()
{
...
}
}
public class
Objekt1Implementation implements Objekt1Interface {
@Override
public String metoda11()
{
...
return string;
}
}
Bohuzel
jsem zjistil, coz je i celkem logicke, ze kdyz klient takto dostane objekt a
zavola na nem metodu (referenceNaRozhrani.getObjekt1().metoda11();), tak mu
server posle vsechny objekty, se kterymi potrebuje pracovat ta volana metoda,
aby si tu cinnost provedl sam klient, cimz mi defakto protuneluje celou
aplikacni logiku. Chtel bych ale, aby mi server na klient poslal pouze
navratovou hodnotu te metody (v mem prikladu by to byl String string) tak,
jako by to udelal kdybych pouzil jedno-tridovou fasadu:
public class
TridaImplementation extends UnicastRemoteObject implements
Trida{
public
TridaImplementation(int port) throws RemoteException{
super(port);
}
@Override
public String
metoda11() {
...
return
string;
}
}
Je mozne to nejak jednoduse
vyresit nebo se budu muset spokojit pouze s tou jednou
tridou?
Lukáš Kinc
Stáhněte si zcela nový Messenger 2009! Klikni zde!
_________________________________________________________________
Pozvi své přátele z Facebooku a Hotmailu do Messengeru!
https://www.invite2messenger.net/Default.aspx