Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
Interiorul Servleturilor .
1. API-ul Servleturilor
Toate servleturile trebuie numaidecat sa implementeze interfata Servlet. Aceasta interfata descrie mecanismul exact prin care serverul retea va interactiona cu servleturile, incluzand initializarile, finalizarea si raspunsul procesului.
Detalii despre
raspunsul fiecarui client sunt date de servlet prin intermediul interfetei
"ServletRequest" (figura 6). Aceasta interfata descrie proprietatile generale
ale cererii care a fost facuta catre servlet. Servletul
rezolva cererea si apoi raspunde clientului prin intermediul interfetei
ServletResponse. Aceasta interfata are un
mecanism pentru ca servletul sa seteze tipurile de date pentru raspuns si sa
scrie in fisierul de iesire acest raspuns.
Mai des, totusi, un servlet poate fi o subclasa a unei implementari concrete a unei interfete "Servlet" care are suport specific pentru anumite servere. Cel mai obisnuit exemplu este clasa "HttpServlet" care implementeaza Servlet si are metode specializate pentru a prelucra cererile HTTP. In acest caz, cererea clientului este prezentata servletului ca un obiect "HttpServletRequest", si clientul primeste raspunsul prin intermediul unui obiect "HttpServletResponse".
2. Ciclul de viata al servletului
Servletul
API specificat defineste ciclul de viata al servletului. Ciclul de viata incepe cand un servlet este instantiat, dupa care cererea este
prelucrata, si se termina atunci cand servletul este distrus.
In general, un servlet este creat o singura data, prima data cand clientul o cere. Inainte ca aceasta prima cerere sa fie preluata, servletul este automat initializat de serviciul de retea cu diferiti parametrii predefiniti. Cand serviciul de retea decide sa dezinstaleze servletul, este apelat un destructor, astfel incat servletul sa elibereze resursele pe care le-a ocupat (figura 7).
3 Variatii in ciclul de viata.
In ciclul de viata al unui servlet exista importante variatii, depinzand de modul de invocare a servletului.
Daca un servlet este folosit intr-un SSI (server-side include), el este instantiat si initializat din nou de fiecare data cand documentul este accesat, in cazul in care servletul nu este numit explicit in tag-ul servlet. Daca un servlet este numit, el va fi incarcat o singura data impreuna cu parametrii de initializare; aceasta unica instanta va fi folosita pentru a servi viitoarele cereri. Daca un servlet SSI are nevoie de initializari in plus, el va trebui numit explicit pentru mai multa eficienta.
Prin intermediul instrumentului de administrare a serverului Java Web Server, servleturile pot fi configurate sa se incarce in momentul de pornire a serverului. Acest lucru are avantajul de a permite servleturilor care au operatii in plus la pornire sa fie initializate inainte de primul lor acces. Acest lucru elimina posibilitatea ca raspunsul initial sa aiba un timp prea mare pentru client dar servletul va fi incarcat pentru o durata mai mare decat normala, in cazul in care servletul nu va fi oprit manual.
Parametrii Servletului.
Sunt doua mecanisme importante pentru a transmite informatiile de configurare intr-un servlet.
Parametrii de initializare sunt transmisi servletului atunci cand acesta este incarcat prima data; ei sunt specificati intr-o structura configuratie suplimentara servletului in timpul initializarilor. Acesti parametrii sunt folositi pentru configurarea de informatii generale, care se aplica tuturor cererilor. Ei sunt de obicei configurati static de instrumentul de admistrare grafic, altfel pentru servleturile SSI pot de asemenea sa fie declarate intr-un tag servlet in-line.
Depizand de metoda folosita pentru a invoca servletul, parametrii ceruti pot fi de asemenea specificati intr-o cerere servlet. Daca parametrii sunt dati in timpul executiei, spre diferenta de parametrii dati in momentul initializarii, ei pot fi folositi pentru da informatii particulare unei anumite cereri. Pentru servleturile HTTP, acesti parametrii sunt specificati in sirul cererii clientului. Pentru servleturi SSI, parametrii sunt luati din tag-ul "param" din tag-ul servlet.
5. Acces prin fire de executie si sincronizare.
De cand serverele creeaza doar o singura data o instanta a unui servlet pentru a prelua cereri distincte si uneori concurente, programatorul trebuie sa se concentreze asupra sigurantei firelelor de executie pentru ca tehnicile de sincronizare standard sa fie folosite ca sa asigure ca servletul preia cererile in siguranta. Toate potentialele accesari concurente a unui servlet vor face apelari concurente catre metoda "service()". Blocurile de cod din aceasta metoda care are trebui sa nu fie executata concurent ar trebui sincronizate cu lacatele respective.
O interfata aditionala
a fost adaugata in JSDK 2.0 care permite scriitorilor de servleturi sa ignore problemele de acces concurent. Implementarea
interfatei "SingleThreadModel", garanteaza ca doua fire de executie nu vor
executa concurential metoda "service()". In astfel de
servleturi, instantele multiple pot fi create pentru a
asigura ca va exista intotdeauna o instanta care poate prelua o cerere fara
blocaje (figura 8).
6. Servlet beans
Servlet beans sunt servleturi adaugate la specificatiile JavaBeans. Un servlet bean are mai multe avantaje fata de servleturile standard. In primul rand, un servlet bean poate fi distribuit intr-un fisier JAR care contine toate clasele si resursele servletului. Fisierul servlet JAR este instalat deobicei in subdirectorul servletbeans al serverului. Un al doilea avantaj este ca serverul gazda poate folosi introspectia pentru a accesa proprietatile servletului in stilul JavaBean. Acest lucru permite ca servletul sa primeasca informatii noi fara sa fie reincarcat. Serverele, cum ar fi Java Web Server, permit administrarea grafica a proprietatilor servlet bean prin intermediul acestui mecanism. Alt avantaj al servleturilor bean este ca serverul gazda poate sa le serializeze automat. Odata ce o proprietate a fost modificata, noul bean poate fi automat serializat astfel incat schimbarea sa fie efectuata. Urmatoarea data cand server-ul va incarca servletul, el poate fi incarcat din fisierul .ser in loc sa-l incarce din fisierul original JAR.
Copyright © 2024 - Toate drepturile rezervate