proste pytanie na temat =?ISO-8859-2?Q?Servlet=F3w?=
intheshadow - 25-04-2006 00:03
proste pytanie na temat =?ISO-8859-2?Q?Servlet=F3w?=
Witajcie, czytam, czytam i czytam od dawna, ale teoria jedno, a praktyka drugie i słabo rozumiem kilka zagadnień. Mam takie pytanie dotyczące pisania aplikacji webowych:
1. Czy to, że domyślnie servlet działa w trybie wielowątkowym oznacza w praktyce, że: a) tworzonych jest tyle instancji servletu ile połączeń? b) jeden serwlet obsługuje wiele połączeń?
2. W zależności od odpowiedzi na pytanie 1 :). Czy kolekcje użyte w servlecie i w ogóle w klasach po stronie serwera (np JavaBean) muszą być jakoś specjalnie wielowątkowo przystosowane?
Pytania moje dotyczą najbardziej typowej aplikacji webowej, w której np. na podstawie requestów użytkownika generuje się tabelka z danymi itp.
P.S. Sorry za lamerskość tego pytania, ale gnębi mnie to bardzo.
-- z pozdrowieniem paweł
Brzezi - 25-04-2006 00:03
pon, 24 kwi 2006 o 19:14 GMT, intheshadow napisał(a):
> 1. Czy to, że domyślnie servlet działa w trybie wielowątkowym oznacza w > praktyce, że: > a) tworzonych jest tyle instancji servletu ile połączeń? > b) jeden serwlet obsługuje wiele połączeń?
b), gdy zmienisz na jednowatkowy, to rzadania zdaje sie ze sa obslugiwane szeregowo
> 2. W zależności od odpowiedzi na pytanie 1 :). Czy kolekcje użyte w > servlecie i w ogóle w klasach po stronie serwera (np JavaBean) muszą być > jakoś specjalnie wielowątkowo przystosowane?
atrybuty obiektu musza byc przystosowane do dzialanie wielowatkowego, badz traktowane w odpowiedni do tego sposob, zmienne lokalne nie wymagaja tego
Pozdrawiam Brzezi -- [ E-mail: brzezi@enter.net.pl ][ ] [ Ekg: #3781111 ][ ] [ LinuxUser: #249916 ][ ]
intheshadow - 25-04-2006 00:03
Brzezi napisał(a): > pon, 24 kwi 2006 o 19:14 GMT, intheshadow napisał(a): > >> 1. Czy to, że domyślnie servlet działa w trybie wielowątkowym oznacza w >> praktyce, że: >> a) tworzonych jest tyle instancji servletu ile połączeń? >> b) jeden serwlet obsługuje wiele połączeń? > > b), gdy zmienisz na jednowatkowy, to rzadania zdaje sie ze sa obslugiwane > szeregowo
Przede wszystkim dzięki za odpowiedź, byłem przekonany, że kontener tworzy nową instancję servletu dla każdego klienta.
>> 2. W zależności od odpowiedzi na pytanie 1 :). Czy kolekcje użyte w >> servlecie i w ogóle w klasach po stronie serwera (np JavaBean) muszą być >> jakoś specjalnie wielowątkowo przystosowane? > > atrybuty obiektu musza byc przystosowane do dzialanie wielowatkowego, badz > traktowane w odpowiedni do tego sposob, zmienne lokalne nie wymagaja tego
Szczerze nie bardzo rozumiem dlaczego atrybuty obiektów muszą być przystosowane do wielowątkowości. Bo weźmy taki przykład:
Jest servlet(Controler), w którym jest kod: .... BazaDanych db = (BazaDanych) getServletContext().getAttribute("db"); Czlowiek cz = db.getCzlowiek(); // tworzę obiekt dla konkretnego żądania request.setAttribute("czlowiek", cz); .... Następnie przekierowuje i wyświetlam obiekt "czlowiek" go w JSP.
Moje pytanie brzmi: Czy zarówno klasa BazaDanych, jak i Czlowiek powinny być przystosowane wielowątkowo? Bo co do bazy danych to widzę, że jedna instancja jest dla wszystkich wątków servletu, ale co do klasy czlowiek mam wątpliwości. Chodziło ci o zmienne lokalne w jakim znaczeniu? Lokalne dla poszczególnych metod?
Mam nadzieję, że za bardzo nie zamotałem :).
-- z pozdrowieniem paweł
Brzezi - 25-04-2006 00:03
pon, 24 kwi 2006 o 20:30 GMT, intheshadow napisał(a):
>> atrybuty obiektu musza byc przystosowane do dzialanie wielowatkowego, badz >> traktowane w odpowiedni do tego sposob, zmienne lokalne nie wymagaja tego > > Szczerze nie bardzo rozumiem dlaczego atrybuty obiektów muszą być > przystosowane do wielowątkowości. Bo weźmy taki przykład:
piszac obiekt, mialem na mysli obiekt servletu
> BazaDanych db = (BazaDanych) getServletContext().getAttribute("db"); > Czlowiek cz = db.getCzlowiek(); // tworzę obiekt dla konkretnego żądania > request.setAttribute("czlowiek", cz); > ... > Następnie przekierowuje i wyświetlam obiekt "czlowiek" go w JSP. > > Moje pytanie brzmi: > Czy zarówno klasa BazaDanych, jak i Czlowiek powinny być przystosowane > wielowątkowo?
BazaDanych tak, poniewaz e jednej chwili kilka watkow moze miec do niej dostep
a Czlowiek to zalezy, jezeli reprezentuje ona tylko dane pobrane z bazy danych to nie
ogolnie mowiec, jezeli do jakiejsc zmienne moze miec dostep w jednej chwili kilka watkow to musi on byc do tego przystosowana...
Pozdrawiam Brzezi -- [ E-mail: brzezi@enter.net.pl ][ Ta sygnatura zostala automagicznie ] [ Ekg: #3781111 ][ wygenerowana programem Signify v1.14. ] [ LinuxUser: #249916 ][ Po ten i inne super programy, ] [ zajrzyj na http://www.debian.org/ ]
intheshadow - 25-04-2006 00:03
Brzezi napisał(a): > pon, 24 kwi 2006 o 20:30 GMT, intheshadow napisał(a): > >>> atrybuty obiektu musza byc przystosowane do dzialanie wielowatkowego, badz >>> traktowane w odpowiedni do tego sposob, zmienne lokalne nie wymagaja tego >> Szczerze nie bardzo rozumiem dlaczego atrybuty obiektów muszą być >> przystosowane do wielowątkowości. Bo weźmy taki przykład: > > piszac obiekt, mialem na mysli obiekt servletu >
To już mi się rozjaśniło wiele.
>> BazaDanych db = (BazaDanych) getServletContext().getAttribute("db"); >> Czlowiek cz = db.getCzlowiek(); // tworzę obiekt dla konkretnego żądania >> request.setAttribute("czlowiek", cz); >> ... >> Następnie przekierowuje i wyświetlam obiekt "czlowiek" go w JSP. >> >> Moje pytanie brzmi: >> Czy zarówno klasa BazaDanych, jak i Czlowiek powinny być przystosowane >> wielowątkowo? > > BazaDanych tak, poniewaz e jednej chwili kilka watkow moze miec do niej > dostep > > a Czlowiek to zalezy, jezeli reprezentuje ona tylko dane pobrane z bazy > danych to nie > > ogolnie mowiec, jezeli do jakiejsc zmienne moze miec dostep w jednej chwili > kilka watkow to musi on byc do tego przystosowana...
Ok, dzięki za pomoc. Pozmieniam tylko w BazaDanych metody na synchronized, bo wszystkie pola są static final i sprawa załatwiona.
Apropos ciekawy wątek na temat Twojej osoby. Ale dobrą renomę masz IMHO zasłużoną. Pozdrawiam.
-- z pozdrowieniem paweł
Brzezi - 25-04-2006 00:03
pon, 24 kwi 2006 o 21:01 GMT, intheshadow napisał(a):
> Ok, dzięki za pomoc. Pozmieniam tylko w BazaDanych metody na > synchronized, bo wszystkie pola są static final i sprawa załatwiona.
to ze klasa musi byc "multi thread safe" nie oznacza, ze kazda metoda musi byc synchronized, przewaznie jest to bledem, powinno sie synchornizowac jak najmniejszy kawalek kodu, jedynie ten niezbedny, no i do tego nie wszystko musi byc zsynchronizowane... :)
Pozdrawiam Brzezi -- [ E-mail: brzezi@enter.net.pl ][ brzezi:~# uptime ] [ Ekg: #3781111 ][ 21:05:58 up 11:01, 4 users, load ] [ LinuxUser: #249916 ][ average: 0.85, 1.65, 1.93 ]
intheshadow - 25-04-2006 00:03
Brzezi napisał(a): > pon, 24 kwi 2006 o 21:01 GMT, intheshadow napisał(a): > >> Ok, dzięki za pomoc. Pozmieniam tylko w BazaDanych metody na >> synchronized, bo wszystkie pola są static final i sprawa załatwiona. > > to ze klasa musi byc "multi thread safe" nie oznacza, ze kazda metoda musi > byc synchronized, przewaznie jest to bledem, powinno sie synchornizowac jak > najmniejszy kawalek kodu, jedynie ten niezbedny, no i do tego nie wszystko > musi byc zsynchronizowane... :)
Hmm, w zasadzie klasa ma dostarczać metody dostępowe do bazy danych (wzorzec DAO bodajże), więc chyba faktycznie nie trzeba ich synchronizować, bo każda i tak ma swoje własne Connection. No tak, zapomniałem, że nadmierna synchronizacja znacznie spowalnia aplikację.
-- z pozdrowieniem paweł
Rep - 25-04-2006 00:03
Użytkownik "Brzezi" <usunto.brzezi@enter.net.pl> napisał w wiadomości news:slrn.pl.e4q4mn.6uu.usunto.brzezi@localhost.lo caldomain... > pon, 24 kwi 2006 o 19:14 GMT, intheshadow napisał(a): > >> 1. Czy to, że domyślnie servlet działa w trybie wielowątkowym oznacza w >> praktyce, że: >> a) tworzonych jest tyle instancji servletu ile połączeń? >> b) jeden serwlet obsługuje wiele połączeń? > > b), gdy zmienisz na jednowatkowy, to rzadania zdaje sie ze sa obslugiwane > szeregowo >
Tzn. nigdy nie bedzie sytuacji, w ktorej dwa watki beda jednoczesnie wykonywac metode service(). Bedzie to zagwarantowane na dwa sposoby, albo wlasnie szeregowo, albo bedzie stworzony servlet pool.
intheshadow - 26-04-2006 01:23
Rep napisał(a): > Użytkownik "Brzezi" <usunto.brzezi@enter.net.pl> napisał w wiadomości > news:slrn.pl.e4q4mn.6uu.usunto.brzezi@localhost.lo caldomain... >> pon, 24 kwi 2006 o 19:14 GMT, intheshadow napisał(a): >> >>> 1. Czy to, że domyślnie servlet działa w trybie wielowątkowym oznacza w >>> praktyce, że: >>> a) tworzonych jest tyle instancji servletu ile połączeń? >>> b) jeden serwlet obsługuje wiele połączeń? >> b), gdy zmienisz na jednowatkowy, to rzadania zdaje sie ze sa obslugiwane >> szeregowo >> > > Tzn. nigdy nie bedzie sytuacji, w ktorej dwa watki beda jednoczesnie > wykonywac metode service(). Bedzie to zagwarantowane na dwa sposoby, albo > wlasnie szeregowo, albo bedzie stworzony servlet pool. > > > Dzięki za wyjaśnienie.
-- z pozdrowieniem paweł
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Wydajność baz danych w zależności od poziomu izolacji ANSI/ISO
Czy zna (obsługuje) ktoś program Iso Draw ?
MYSQL - kodowanie w ISO-PL
strona plus baza w iso do utf-8
Kodowanie: z iso na utf
Konwesja znaków w dump'ie bazy danych - ISO -> utf-8 -> ISO -> utf-8
=?iso-8859-2?q?Co_oznacza_b=B3=B1d_Warning:_mysql=5Fconnect() _[function.mysql-connect]:_Can't_connect_to_local_MySQL_server_through_sock et_'/var/run/mysqld/mysqld.sock'_(2)_in?=
=?iso-8859-2?q?Informatyka,_Java,_EJB,_Ajax,_Spring=2E_Czy=BF by_to_koniec_=B6wiata,_czy_te=BF_nasze_uczelnie_b= EAd=B1_uczy=B3y_w_ko=F1cu!_czego_praktycznego_=2E= 2E=2E=2E?=
=?iso-8859-2?q?Ati_Mobility_Radeon_X300_W_Notebooku_Jak_Zwi=E Akszy=E6_Ilo=B6=E6_Grafiki_Poprzez_Wsp=F3=B3dziele nie_Z_Ramu=3F=3F=3F?=
pytanie o zapytanie z having count = count z innej kolumny
zanotowane.pldoc.pisz.plpdf.pisz.plsulimczyk.pev.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|