Avatar billede zumteufel Nybegynder
22. marts 2006 - 14:02 Der er 3 kommentarer og
1 løsning

Servlet svarer ikke efter et stykke tid

Jeg kører en webapplikation på resin 3.0.14, som generelt spiller fint.

Mit problem er, at én af mine servlets holder op med at svare på requests efter et stykke tid (så vidt jeg kan se, er der ikke noget tidsmønster, udover at det som regel handler om en dags tid eller lidt mindre).

Jeg får ingen fejlmeddelelser eller stack traces i hverken stdout.log eller stderr.log, selv om jeg kører med debug-logging. Jvm.log afslører heller ingenting.

En system.out.println i doPost(..) og doGet(..) afslører, at metoderne BLIVER kaldt ved et request, men den processRequest(..)-metode som begge disse metoder kalder bliver IKKE kaldt (her skriver jeg også til loggen som første sætning i metoden.
Det eneste doPost(...) og doGet(..)-metoderne indeholder er println-sætningen og kaldet til processRequest(..).

Konkret:

protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, java.io.IOException
{
    System.out.println("doGet() called");
    processRequest(request, response);   
}


protected synchronized void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException
{
    System.out.println("******* processRequest() called");
    response.setContentType("text/html");
    .
    .
    .
}


Teksten "******* processRequest() called" bliver aldrig skrevet ud, når problemet opstår, men "doGet() called" gør.

Jeg fandt info om et lignende problem, hvor løsningen var at give logfilerne løsere skriverettigheder - rotationen af loggen kunne ikke foregå pga. rettighedsproblemer.

Jeg har givet mine logfiler løsere skriverettigheder, jeg kører resin som root (bad boy, I know), men intet hjælper.


Hvis nogle kan knække denne nød, vil jeg være taknemmelig!
Avatar billede arne_v Ekspert
23. marts 2006 - 05:46 #1
har du prøvet løbende at skrive memory forbrug statistik ud for at se
om det er en memory leak ?
Avatar billede zumteufel Nybegynder
23. marts 2006 - 12:02 #2
Der ER et memory leak, for jeg løber ind i en outofmemoryexception i ny og nä - men det er et LANGT mere sjældent (og mindre) problem end det nævnte. Og jeg får som sagt ingen fejl (heller ikke brokkeri om manglende hukommelse), når min problematiske servlet holder op med at svare.
Avatar billede zumteufel Nybegynder
23. marts 2006 - 17:40 #3
Hm, lægger lige mærke til at processRequest er "synchronized" - som den eneste af mine servlets. What a coincidence. Prøver at fjerne synkroniseringen...
Avatar billede zumteufel Nybegynder
27. marts 2006 - 04:35 #4
Jep, det hjalp at fjerne "synchronized"!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester