Dobry den,
podle specifikace servletu verze 2.4 (a podle predchozich verzi take)
muze byt v kontejneru jen jedna instance servletu, pokud servlet
neimplementuje SingleThreadModel. Vice instanci je povoleno pokud je
aplikace distribuovana (je v DD oznacena jako distributable a bezi ve
vice kontejnerech - pak kazdy kontejner muze mit vlastni instanci
servletu) nebo pokud servlet implementuje SingleThreadModel (pak muze
byt v kontejneru vice instanci a kontejner zajistuje pooling).
Ve verzi 2.4 je ovsem SingleThreadModel deprecated.
Z.T.
--
Zdenek Tronicek
Department of Computer Science and Engineering
Prague tel: +420 2 2435 7410
http://cs.felk.cvut.cz/~tronicek
Quoting Lukáš Zapletal <[EMAIL PROTECTED]>:
No ja mam pocit, ze specifikace nerika, ze paklize v jeden okamzik
mate vice requestu na jeden servlet, ze je MUSI zakonite vyrizovat
jedna instance. Je na kontejneru, zda se rozhodne vytvorit vice (treba
deset) instanci. Pozadavky pak muze distribuovat mezi tyto instance -
to zalezi na implementaci. Nicmene nelze zarucit, ze se tak nestane -
a prave proto tu mame single thread model.
LZ
Dne 14. červen 2008 13:11 bardolf * <[EMAIL PROTECTED]> napsal(a):
Zdravim konferenci,
mam newbie dotaz na servlet. Docetl jsem se o problemu clenskych
promennych (member variables) v servletech pri zpracovani vice
requestu najednou. Cetl jsem napr. tento clanek
http://www.javaworld.com/javaworld/jw-07-2004/jw-0712-threadsafe.html .
Nebudu prepisovat kod, je k videni o page dal
http://www.javaworld.com/javaworld/jw-07-2004/jw-0712-threadsafe.html?page=2 (ikdyz s malou chybou Thread.currentThread().sleep((long) Math.random() * 1000); je lepsi nahradi Thread.sleep((long) (Math.random() * 1000)); - nejen staticka metoda ale hlavne to pretypovani neni
dobre).
Kdyz se tento servlet dotazuje vice requestu v jeden cas, ocekaval
bych vysledek jaky je uveden v clanku. Ale vsechny requesty cekaji
jeden na druhy (jako bych implementoval SingleThreadModel).
Snazil jsem se nalezt odpoved, tipoval jsem spatne nastaveni
weboveho containeru, ale zkousel jsem to na Tomcatu 6.0.16 a
5.5.26, na Glassfishi V2 - vse s defaultnim nastavenim. Tak mozna
se kdysi davno zmenilo ServletAPI a vsichni to povazuji za
samozrejmost. Ne tak ja ;-).
Diky za kazdou odpoved, precetl jsem uz hafo konferenci a snad
vsechny internety ;-)
--
Lukas Zapletal
http://lukas.zapletalovi.com