19. marts 2003 - 11:33Der er
12 kommentarer og 1 løsning
Hvordan virker en servlet?
Bliver der oprettet en ny instans af servlet-klassen ved hver ny request? Eller er det samme instans, der håndterer alle requests? Hvornår kaldes init()? Hvordan skal man behandle medlemsvariablene i servletklassen, skal de betragtes som data, der deles mellem tråde eller data, der er privat for en tråd?
Når init kaldes, laver jeg en instans af den HTML-skabelon, der skal bruges til response. I min doGet/doPost laver jeg en kopi af den tidligere oprettede instans, derved slipper jeg for at læse filen igen og scanne den.
I en metode, der kører periodisk (?) tjekker jeg om skabelonfilen er blevet ændret, hvis ja, skal den genindlæses i "master" kopien. (kan man evt. bruge destroy() til det)?
Jeg går ud fra at jeg kan lave mit skabelonobjekt synchronized?
Lyder som en god ide at cache skabelonen fra kald til kald.
Læsning i init og clone i metoder burde virke.
Og jeg vil endda tro, at der ikke vil blive kaldt nogen metode før init er færdig => det burde ikke engang være nødvendigt at synchronize.
[check det !]
Det er ikke hverken nemt elller pænt at lave en tråd der står og checker om filen har ændret sig.
destroy bliver kaldt når applikationen lukke rned og er næppe relevant.
Jeg ville nok lave det som: en singleton der læse fil i constructor en user servlet der finder singleton og henter skabelon fra den en admin servlet der finder singleton og beder den opdatere far disk
Så når man retter i filen, så kalder man lige admin servletten for at opdatere.
Ikke så elegant som fuld automatik, men nemt at implementere sikkert.
Men det der gør singleton speciel er at den altid returnerer det samme objekt.
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.