Dobry den

1) JSP generuje svuj vystup do bufferu. Pokud je buffer plny odesle ho na klienta. Pokud jiz jiz byl obsah bufferu odeslan neni mozne dat vedet, ze se neco v dalsi casti vystupu pokazilo. Pokud obsah bufferu odeslan nebyl posle se chybova stranka. 2) Vytisknout nekolik set retezcu samozrejme mozne je, pouze pri jejich generovani nesmi dojit k chybe, jinak samozrejme nastane bod 1) 3) Pokud generuji nejaky vetsi vystup je vhodne pouzit nejakou formu strankovani. 4) Nez to zacnu renderovat je vhodne mit data, ze kterych to generuji v pameti. Bez strankovani je to sice narocnejsi na pamet, ale aspon mam jistotu, ze nebude dochazet k vyjimkam pri ziskavani dat. (Nepredpokladam, ze timto zpusobem generujete 50ti strankove reporty)

Vyse uvedene jsou pouze takove obecne poznamky. Ve Vasem pripade bych vubec neresil jsp, ale venoval bych usili hledani problemu kolem te tree2 komponenty, problem s JSP je pouze druhotny.

Soustredil bych se na nasledujici:
1) Kde mate ulozen model toho stromu (application,session,request,t:saveState). Mohl by byt problem pri obnove stavu komponenty, pokud by jiz nejaka cast neexistovala a model byl v request scope. 2) Pokud se dotahuji data dynamicky pri renderovani nemuze dojit k nejake vyjimce tam? 3) Pokud je ten strom nejaky zivejsi (casto se meni) zkusil bych mezi dvema requesty jako jiny uzivatel ten strom zmenit, jestli to prezije nasledujici request.

Preji pekny den
Karel Zacek

Jakub Příkazský wrote:
Dobrý den,

zkusili jsme experimentovat z různou velikostí bufferu a chyba se projevuje stejně. Bohužel se projevuje pouze u zákazníka, takže se nám ji nedaří nasimulovat ve vývojovém prostředí.

Mám jen jednu otázku: Přijde mi hodně zvláštní, že není možné vytisknout do stránky "několik stovek řetězců". Toto chování JSP je běžné, nebo se jedná o nějakou chybu nebo jsem něco nepochopil? Přeci nebudu nastavovat velikost bufferu podle počtu záznamu v databázi, například pokud bych dělal nějaký report apod.

děkuji Jakub

Jakub Příkazský napsal(a):
Dobrý den,

děkuji za vyčerpávající odpověď. JSF používají pro zobrazení JSP viz http://en.wikipedia.org/wiki/JavaServer_Faces, takže by nám mohla být vaše rada být hodně užitečná.

Zdravím

Jakub Příkazský

Peter Stibrany napsal(a):
Dobry den,

priznam sa, ze neviem ktore z nastaveni v konfiguracii tomcatu toto
ovplyvnuju. Ja ked som dany problem pozoroval, tak som menil velkost
bufferu priamo v JSP stranke pouzitim direktivy <[EMAIL PROTECTED] buffer="..."
%>.

Nasledujuca JSP stranka demonstruje problem:

<[EMAIL PROTECTED] buffer="9kb" %>
<%
    for (int i = 0; i < 1000; i++) {
        out.println("" + i + " Bez domu Ivane, ceka te Natasa<br />");
               if (i == 350) {
            out.println("" + i + " Ooops<br />");
            throw new IllegalStateException("fail: " + i);
        }
    }
%>

Uvedena velkost buffera 9kb sposobi, ze klient dostane riadky 0 az
221, hoci JSP stranka padne az pri iteracii 350. Detailnejsi pohlad na
odpoved zo servera ukaze, ze odpoved (okrem hlaviciek a po odstraneni
chunkovania) ma skutocne presne 9216 bajtov, teda 9kb.

Tento priklad ukazuje:
* klient dostane odpoved, ale nie kompletnu (riadky 222 az 350 sa mu
uz nikdy neposlu)
* klient nedostane ziadnu informaciu o chybe
* chyba (vynimka) je zalogovana v logoch aplikacie

Ked sme raz na tento problem narazili, a zvacsili sme velkost buffera
dostatocne na to, aby sa nestihlo klientovi nic poslat, tak pri
zlyhani JSP stranky a vyhodeni vynimky poslal Tomcat namiesto kusku
odpovede radsej chybovu stranku s vynimkou. To nam pomohlo zistit, co
sa vlastne stalo.

Zial neviem Vam poradit, ako tieto znalosti aplikovat na prostredie JSF :-(

-ps

2008/8/21 Jakub Příkazský <[EMAIL PROTECTED]>:
Peter Stibrany napsal(a):

Děkuji za odpověď,

zkusil jsem změnit nastavení komponenty tree2, na otevírání uzlů na
serveru na clientSideToggle=false a už se mi alespoň stromek zobrazí.
Pokud ale zkusím rozbalit několik dalších uzlů (při prvním otevření jsou zbalené), tak se problém opět objeví. Pouze jsem se chtěl zeptat, které
hodnoty konfigurace Tomcatu měníte viz
(http://tomcat.apache.org/tomcat-5.5-doc/config/http.html) nebo si
myslíte, že mohou mít vliv? Zkusil jsem změnit bufferSize v konfiguraci
http konektoru, ale nezpozoroval jsem žádný vliv. Zjistil jsem, že se
maximální velikost vykreslené stránky pohybuje okolo 52KB. Používám
Tomcat 5.5.25.

S pozdravem

Jakub Příkazský
Prajem pekny den,

Neviem o JSF dost nato, aby som vedel, ci nas problem suvisi s Vasim,
ale ved posudte... my pouzivame Tomcat, Servlety a JSP stranky.

Pri naozaj velkych vystupoch z JSP stranky sa nam obcas stane, ze
pocas vykonavania stranky sa cast vystupu stihne poslat na klienta
(ked sa zaplni buffer), a az potom vykonavanie JSP stranky spadne.
Problem je, ze klient uz vidi tu cast, co dostal -- ale viac nikdy
nedostane, lebo JSP stranka zlyhala. Vynimku vidiet v logoch aplikacie (ak nie je niekde odchytena a zabudnuta), pohlad klienta je vsak taky,
ze dostane len prvu cast stranky a nic viac, ziadnu chybu.

Pozrite sa na vystup, ktory klient dostane ... ci nahodou nema velkost
nasobku velkosti buffera. To by mohlo indikovat podobny problem. Ak
vsak nevidite ziadne problemy v logoch, tak bude tazke to najst (a
mozno to ani nesuvisi).

S pozdravom,
-Peter Stibrany


2008/8/20 Jakub Příkazský <[EMAIL PROTECTED]>:

Zdravím konferenci,

v aplikaci se mi objevuje naprosto záhadná chyba. Některé záznamy nelze úplně zobrazit, vykreslí se pouze část stránky (několik uzlů a pak už jen kousek nějakého html). Pro zobrazení záznamu používáme stromek, komponenta tree2 MyFaces viz. (http://wiki.apache.org/myfaces/Tree2). Díval jsem se do logu a nevidím nikde žádné chybu - renderovací cyklus JSF projde celý, data jsou také načtená. V dokumentaci stromku jsem našel zmínku pouze o vysoké
paměťové náročnosti pokud je uzlů hodně a je zapnuté rozbalování na
klientovi - clientSideToggle=true, ale to není náš případ (cca 40 uzlů). Zkoušel jsem na serveru přístup přes lokální alias (jestli se neděje něco po cestě), ale chyba se projevuje stejně. Napadá někoho, jak problém řešit?

díky Jakub






Odpovedet emailem