Ako sa problém prejavuje
Pri práci s dokladom (napr. pri vložení položky z cenníka) dôjde k pádu operácie s chybou: java.lang.StackOverflowError
Čo chyba znamená
Táto chyba znamená, že došlo k príliš hlbokému reťazcu volaní metód, ktorý viedol k vyčerpaniu zásobníka (stacku).
K tomu môže dôjsť napríklad:
pri cyklickej väzbe v dátach (nekonečné spracovanie)
pri opakovanom vyvolávaní udalostí v rozhraní (GUI)
alebo všeobecne pri nekontrolovanom opakovaní operácie
Príklady
1. Poplatky v cenníku
V logu možno sledovať:
cz.winstrom.service.dok.impl.PoplatkyHelper.refreshPoplatkyByCenik(PoplatkyHelper.java:100)
cz.winstrom.service.dok.impl.PolDoklBLImpl.fillPolDoklCenikem(PolDoklBLImpl.java:7067)
cz.winstrom.service.dok.impl.PoplatkyHelper.refreshPoplatkyByCenik(PoplatkyHelper.java:100)
cz.winstrom.service.dok.impl.PolDoklBLImpl.fillPolDoklCenikem(PolDoklBLImpl.java:7067)
položka má priradený poplatok
tento poplatok má nastavený ďalší poplatok
a ten odkazuje späť na pôvodný
Ako problém riešiť
V cenníku odstráňte väzbu na ten istý poplatok.
2. Problém pri vykresľovaní (GUI)
Chyba môže vzniknúť aj pri práci s rozhraním, typicky pri zobrazení väčšieho objemu dát.
V logu sa potom objavujú opakujúce sa volania napr.:
at java.awt.AWTEventMulticaster.componentMoved
at java.awt.AWTEventMulticaster.componentResized
👉 znamená to, že:
komponent sa opakovane prekresluje / prepočítava
vzniká slučka v GUI udalostiach
Ako problém riešiť
obmedziť množstvo zobrazených dát (filter, menší rozsah obdobia)
zatvoriť a znovu otvoriť agendu
