Jen drobnost, load-on-startup neznamená počet instancí servletu (ta je vždycky jedna), ale pořadí, v jakém se servlety inicializují.
Vlákno názorů k článku
Java na webovém serveru: Vlastní JSP značky a servlety
Re: Java na webovém serveru: Vlastní JSP značky a servlety
Re: Java na webovém serveru: Vlastní JSP značky a servlety
Díky za opravu, je to tak.
BTW: někdy může existovat více instancí jednoho serveru – záleží na implementaci AS a použití rozhraní SingleThreadedModel.
Re: Java na webovém serveru: Vlastní JSP značky a servlety
Třeba u Google App Engine, že?
Re: Java na webovém serveru: Vlastní JSP značky a servlety
sorry :-)
serveru → servletu
(to je tak, když člověk už myslí na druhou část věty)
Re: Java na webovém serveru: Vlastní JSP značky a servlety
To je pravda, ale SingleThreadModel je deprecated a uživatel by v každém případě měl předpokládat, že servlet je jen jeden = musí být thread-safe (ideálně bezestavový – ač je to možná s podivem, obvykle to vůbec není problém --, jiná řešení velmi rychle vedou k výkonnostním problémům).
Re: Java na webovém serveru: Vlastní JSP značky a servlety
To je samozřejmě nesmysl – instance servletu je vždy jen jedna a pro každý request vytváří konejner nový thred. Viz specifikace.
Jedinou výjimkou, kdy existuje více instancí servletu, je, pokud je aplikace nasazená v distribuovaném prostředí – na více JVM. Ale i tak, v každém JVM je pouze jedna instance každého servletu. Opět viz specifikace.
BTW, kdybyste dělal SCWCD, tak byste to věděl. Rovněž mohu doporučit skvělou knížku z edice Head First, kde je toto několikrát, s odkazem na specifikaci, zdůrazňováno.
Re: Java na webovém serveru: Vlastní JSP značky a servlety
Doporučuji příslušnou specifikaci dostudovat. Sice se tam píše, že:
„For a servlet not hosted in a distributed environment (the default), the servlet container must use only one instance per servlet declaration.“
ale zároveň:
„However, for a servlet implementing the SingleThreadModel interface, the servlet container may instantiate multiple instances to handle a heavy request load“
Nicméně asi nemá cenu se o tom přít – užitečnost vícenásobných instancí téhož servletu je sporná (asi taky proto je SingleThreadModel zavržený) a navíc mi přijde celkem přirozené psát servlety tak, aby byly vláknově bezpečné – co jde, tak bezstavově a pokud jsou potřeba nějaké proměnné (třeba kolekce) na úrovni třídy, tak počítat s tím, že k nim může přistupovat víc vláken současně.
Re: Java na webovém serveru: Vlastní JSP značky a servlety
Specifikace jest dostudována. Neříká se v ní, jakým způsobem se má SingleThreadModel implementovat – je to vendor specific. Navíc je STM od verze 2.4 deprecated a ani předtím nebylo doporučeno ho používat.