Dobry den,
myslim, ze dost zalezi od toho, ako to skusate. Pouzil som vas servlet
a doplnil som tam riadok
resp.getWriter().println("Thread: " + Thread.currentThread() + "<BR>");
aby som videl, ktory thread dany request obsluzil. Ked som si vo
Firefoxe otvoril tri zalozky a do kazdej vlozil adresu testovacieho
servletu, tak sa to skutocne spravalo tak ako ste pisali... vo
vsetkych troch zalozkach som videl rovnaky thread. Avsak ked som
zaroven s Firefoxom otvoril aj Internet Explorer a tam skusil rovnaku
adresu, tak tento request uz bol obsluzeny dalsim threadom. Ked som
skusal iba Internet Explorer a dve zalozky, tak kazdy request bol tiez
obsluzeny vo vlastnom vlakne. Vinnika by som teda nehladal v serveri,
ale skor v klientovi (v mojom pripade vo Firefoxe).
Ako ste to testovali vy?
-Peter Stibrany
On Sat, Jun 14, 2008 at 3:06 PM, bardolf * <[EMAIL PROTECTED]> wrote:
> Dobry den,
> zkusim svou otazku reformulovat. Mame jen jednu instanci servletu v
> kontejneru a s kazdym prichozim requestem se vytvori/vezme z poolu thread.
> Prijdou-li soucasne 2 requesty na jeden servlet, vytvori se 2 thready a oba
> thready volaji metody instance servletu. SingleThreadModel (nyni deprecated)
> zajisti to, ze 2 thready nikdy nebudou volat soubezne metodu servletu.
>
> Muj pokus (priklad na vyse uvedenych strankach) mel smerovat k tomu, aby se
> s vice prichozima requestama vytvorilo vice threadu a ty volaly soucasne
> metody instance servletu. Bohuzel se mi pokus chova presne tak, ze jsou
> requesty obsluhovany "pekne" sekvencne a cekaji na sebe.
>
> Diky B.
>
> import java.io.IOException;
> import javax.servlet.*;
> import javax.servlet.http.*;
>
> public class NewServlet extends HttpServlet {
> private int counter = 0;
>
> public void doGet(HttpServletRequest req, HttpServletResponse resp)
> throws ServletException, IOException {
> doPost(req, resp);
> }
>
> public void doPost(HttpServletRequest req, HttpServletResponse resp)
> throws ServletException, IOException {
> resp.getWriter().println("<HTML><BODY>");
> resp.getWriter().println(this + ": <br>");
> for (int c = 0; c < 10; c++) {
> long l = (long) (Math.random() * 1000);
> resp.getWriter().println("Counter = " + counter + "(" + l +
> "ms)<BR>");
> try {
> Thread.sleep(l);
> counter++;
> } catch (InterruptedException exc) {
> }
> }
> resp.getWriter().println("</BODY></HTML>");
> }
> }
>