Rafal
Szulc
rozwiazuje problemy,
optymalizuje
procesy, 2G/3G DB
confi...
Temat: Problem z BlazeDS/AMF
Witam,Mam problem z konfiguracja BlazeDS, cos mi sie wydaje ze nie dziala tak jak powinno :/
Kodu byloby duzo do wklejania wiec postaram sie strescic:
Mam BlazeDS + Glassfish + Oracle 9.2 . W DB 3 tabele, powiedzmy 'A','B','C'.
By stworzyc pewien widok musze pobrac dane z kazdej z tych tabel.
Zapytania 'Select' sa bardzo podobne, roznica wlasciwie tylko w ilosci danych.W 'A' jest malo danych, w 'B' srednio, a w 'C' bardzo duzo.
Tak wiec user klika na Button, ten uruchamia funkcje:
//
private function makeGraph(a:String,b:String,c:String,d:String):void
{
roA.getA(a,b,c); roB.getB(a,b); roC.getC(a,b,c,d);
// zapis czasu startu:
timeStats = "\n"+ 'makeGraph: ' +(new Date()).toTimeString();
}
//
Kazdy z roA/roB/roC jest RemoteObject'em o podobnej strukturze:
<mx:RemoteObject id="roA" destination="aero-amf"
result="resultHandlerA(event)"
fault="faultHandler(event)"
/>
kazdy ma to samo 'destination' (funkcje wywolywane znajduja sie w tym samym pliku .java), kazdy ma swoj osobny resultHandler (A/B/C), przykladowo:
//
private function resultHandlerA(event:ResultEvent):void
{
var rowsA:ArrayCollection = event.result as ArrayCollection;
... // some parsing of results
timeStats += "\n"+ 'resultHandlerA: ' +(new Date()).toTimeString();
readyA = true;
checkIfAllReady(readyA ,readyB ,readyC);
}
//
funkcja sprawdzajaca czy wszystkie RO skonczyly:
private function checkIfAllReady(rA:Boolean,rB:Boolean,rc:Boolean):void
{
if(rA && rB && rC){
... // czyli wszystko sie wczytalo, mozna zmienic view
timeStats += "\n"+ 'checkIfAllReady: ' +(new Date()).toTimeString();
Alert.show(timeStats, 'end');
}
}
//
Poniewaz predkosc dzialania nie powala chcialem zbadac ktory RO jest tak powolny ze reszta 'czeka' na niego. Dodalem zmienna 'timeStats'.
Przykladowy rezultat Alertu z funkcji 'checkIfAllReady':
//
makeGraph: 15:21:23 GMT+0000
resultHandlerA: 15:22:06 GMT+0000
resultHandlerB: 15:22:06 GMT+0000
resultHandlerC: 15:22:06 GMT+0000
checkIfAllReady: 15:22:07 GMT+0000
//
A teoretycznie tylko resultHandlerC powinien spowalniac (najwiecej danych z selecta), a tymczasem wszystkie handlery zwracaja ten sam czas zakonczenia.
Ktos ma jakis pomysl ?Rafal Szulc edytował(a) ten post dnia 09.03.11 o godzinie 17:30