02. april 2003 - 14:33Der er
5 kommentarer og 2 løsninger
Servlet - SingleThreadModel
Hvad er det lige der sker når men implementere SingleThreadModel i sin Servlet. Jeg er ude mærket klar over at der intantieres en ny instance for hver request. Men hvor længe lever den servlet, og hvilket scope er den bundet på?
Der instantieres IKKE en ny servlet for hver request.
Derimod kan kun en bruger kalde den samme servlet på en gang. Så ved flere samtidige requests, vil der blive benyttet forskellige servlet-instancer. Men når en servlet er færdig med at servicere en bruger, er den klar til næste bruger (næste request).
Der er ingen bindinger på scope. Du kan f.eks. ikke forvente noget som helst på tværs af flere requests.
Eksempel:
Hvis 2 brugere requester samtidig, processeres deres requests af forskellige instanser, instans1 og instans2.
Hvis de kort efter begge requester igen, er der ingen garantier:
Måske får bruger1 instans1 igen og bruger2 får instans2 igen, men det kan også være omvendt, der er ingen garantier, hvis det var noget i den retning du tænkte på.
der findes ingen standardiseret måde at gøre det på.
Hele filosofien bag at benytte en servletcontainer er også, at de personer der har kodet den, formentlig er bedre til at lave fornuftig pooling end du og jeg.
I Tomcat og (sikkert også enkelte andre servere) er det muligt ved at lave en underklasse til en bestemt Tomcat-klasse og tilmelde den, men jeg vil bestemt fraråde det.
Det er helt rigtigt at det ikke er meningen at man skal pille ved pool-koden.
Men det det er nu ret almindeligt at man kan konfigurere pool size.
Fordi nok er Tomcat gutterne sikkert gode til at kode Java, men vi formodes at vide mere om hvilken server vi kører på og hvor mange brugere vi forventer.
Jeg har iøvrigt kigget lidt i Tomcat 4.1.24 koden.
Pool size er 20.
Der er en set metode til at ændre den, men den bliver ikke brugt nogen steder i koden.
Synes godt om
Ny brugerNybegynder
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.