METODE SI MODELE ÎN INTELIGEN TA ARTIFICIAL A [614037]

UNIVERSITATEA DIN CRAIOV A
FACULTATEA DE ¸ STIIN ¸ TE
SPECIALIZAREA INFORMATIC ˘A
METODE ¸ SI MODELE ÎN INTELIGEN ¸ TA ARTIFICIAL ˘A
LUCRARE DE DISERTA¸ TIE
Îndrum ˘ator ¸ stiin¸ tific:
Lect.univ.dr. Claudiu-Ionu¸ t POPÎRLAN
Absolvent: [anonimizat]
2017

UNIVERSITATEA DIN CRAIOV A
FACULTATEA DE ¸ STIIN ¸ TE
SPECIALIZAREA INFORMATIC ˘A
METODE ¸ SI MODELE ÎN INTELIGEN ¸ TA ARTIFICIAL ˘A
DEZVOLTAREA APLICA¸ TIILOR FOLOSIND
PLATFORMA ORACLE JA V A ENTERPRISE
Îndrum ˘ator ¸ stiin¸ tific:
Lect.univ.dr. Claudiu-Ionu¸ t POPÎRLAN
Absolvent: [anonimizat]
2017

Cuprins
INTRODUCERE 1
1 NO ¸ TIUNI INTRODUCTIVE 3
1.1 Java Enterprise Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.1 Arhitectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.2 Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1.3 Modelul de dezvoltare al aplica¸ tiilor . . . . . . . . . . . . . . . . . 8
1.1.4 Tehnologii web ¸ si API-uri . . . . . . . . . . . . . . . . . . . . . . 10
1.1.5 Servicii Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.1.6 Securitatea aplica¸ tiilor web . . . . . . . . . . . . . . . . . . . . . . 22
1.1.7 Securitatea în ciclul de dezvoltare al unui produs software . . . . . 28
1.1.8 Avantaje ¸ si dezavantaje . . . . . . . . . . . . . . . . . . . . . . . . 30
2 MANAGEMENTUL DE DOCUMENTE 33
2.1 Alfresco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.2 Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.3 Inteligen¸ ta artificial ˘a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3 INTEGRAREA APLICA¸ TIEI PE LINUX 45
3.1 PuTTY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.1.1 PuTTY Tips and Tricks . . . . . . . . . . . . . . . . . . . . . . . . 57
3.2 SSH – Secure Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.3 MC – Midnight Commander . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.4 SUDO – Substitute User Do . . . . . . . . . . . . . . . . . . . . . . . . . . 68
3.5 AMP – Alfresco Module Package . . . . . . . . . . . . . . . . . . . . . . . 70
CONCLUZII 74
BIBLIOGRAFIE 76

INTRODUCERE
Lucrarea de fa¸ t ˘a î¸ si propune s ˘a eviden¸ tieze eficien¸ ta dovedit ˘a pentru atingerea scopului
final care înglobeaz ˘a o serie de tehnologii folosite în cadrul platformei Java Enterprise
Edition. Dup ˘a cum demonstreaz ˘a sondajele oficiale oferite de diverse companii,
dezvoltarea bazat ˘a pe limbajul de programare Java este cea mai utilizat ˘a în perioada
curent ˘a deoarece ofer ˘a o varietate de oportunit ˘a¸ ti de dezvoltare corespunz ˘atoare cerin¸ telor.
Ideea de baz ˘a care se remarc ˘a în cadrul aplica¸ tiei dezvoltate denot ˘a mult ˘a rigozitate ¸ si
stabilitate în tema de management de documente. Aplica¸ tia propriu-zis ˘a a fost conceput ˘a
pentru a fi folosit ˘a în cadrul organiza¸ tiei de cercetare INCESA, un centru care a fost
conceput cu scopul de a descoperi ¸ si a inova cât mai mult în domeniile propuse.
Tematica care implic ˘a managementul de documente este foarte important ˘a deoarece
tendin¸ ta de a trece documentele în suport electronic este tot mai mare. De asemenea, cererea
companiilor este tot mai mare pe acest segment de dezvoltare. Fiind un subiect care o s ˘a
aib˘a la baz ˘a multe segmente de inova¸ tie, lucrarea propriu-zis ˘a dore¸ ste s ˘a cl˘adeasc ˘a câteva
aspecte care pot fi folosite în demersurile viitoare.
Conceptul business conturat la nivel de mobile este, de asemenea, dup ˘a cum a fost
precizat anterior, destul de c ˘autat deoarece orice client dore¸ ste s ˘a aib ˘a acces la orice
informa¸ tie, oriunde ¸ si oric ˘and, iar cel mai simplu device de portabilitate la momentul
actual este mobilul.
În acest sens, Alfresco este utilitarul software, open-source care satisface toate nevoile
angaja¸ tilor unei companii, aducând în prim plan no¸ tiunea de informa¸ tie. Informa¸ tia este
foarte important ˘a deoarece aduce un plus de cunoa¸ stere asociat ˘a unui suport de unitate
informa¸ tional ˘a în vederea realiz ˘arii de proceduri, opera¸ tii sau tehnici la nivel de sistem
care ghideaz ˘a controlul cre ˘arii, accesului sau version ˘arii unor documente.
Cele mai importante elemente asociate unui sistem de management de documente sunt
fluxul de lucru care dicteaz ˘a la ce entit ˘a¸ ti trebuie s ˘a ajung ˘a informa¸ tia ¸ si metadatele care
sunt asociate acestei inform ˘ari ¸ si ajut ˘a în derularea fluxului.
În primul capitol au fost eviden¸ tiate principalele no¸ tiuni fundamentale care stau la baza
1

INTRODUCERE 2
platformei Java Enterprise Edition. De asemenea, pe lâng ˘a elementele de arhitectur ˘a ¸ si
design care sunt explicate în am ˘anunt în cadrul acestui capitol, au mai fost descrise câteva
aspecte destul de importante în contextul actual, ¸ si anume : securitatea aplica¸ tiilor web
¸ si compara¸ tia cu alte limbaje sau platforme independente de Java. În contextul de fa¸ t ˘a,
datorit ˘a dezvolt ˘arii continue a mecanismelor web, aplica¸ tiile care ruleaz ˘a la nivel de server
web pe browser sunt supuse, destul de des, încerc ˘arilor de atac venite din partea diferitelor
entit˘a¸ ti, r ˘au inten¸ tionate. Astfel, au fost explicate în am ˘anunt tehniciile de ap ˘arare care
trebuie aplicate în cadrul unei aplica¸ tii dezvoltate web.
Capitolul 2 are la baz ˘a elementele definitorii care contureaz ˘a domeniul de management
de documente. Se va eviden¸ tia platforma open-source Alfresco cu ajutorul c ˘areia a fost
dezvoltat ˘a aplica¸ tia. Un alt element important abordat este serverul de aplica¸ tie, care de
altfel, este un factor de decizie în ceea ce prive¸ se buna func¸ tionare a unei aplica¸ tii.
Pe lâng ˘a cele dou ˘a mari subiecte descrise, a fost, nu în ultimul rând, eviden¸ tiat
subiectul de inteligen¸ t ˘a artificial ˘a care se dezvolt ˘a odat ˘a cu apari¸ tia a tot mai multe
parteneriate care le manageriaz ˘a Alfresco cu diverse softuri. Acestea ajut ˘a în mare parte
utilizatorul s ˘a descopere cât mai multe oportunit ˘a¸ ti inteligente care pot fi aplicate
documentelor.
Ultimul capitol pune accent pe no¸ tiuniile practice executate conform men¸ tiunilor
teoretice care au fost abordate anterior. Pe lâng ˘a platforma pe care a fost realizat ˘a
aplica¸ tia, au mai fost eviden¸ tiate elementele prezente odat ˘a cu folosirea PuTTY , mc, sudo
¸ si a¸ sa mai departe. Toate aceste elemente înglobate în sistemul de operare Linux, au fost
folosite de-a lungul dezvolt ˘arii software. Sistemul de operare ales, este considerat cel mai
sigur din punct de vedere al siguran¸ tei la nivelul actual deoarece ofer ˘a o serie de
mecanisme de protec¸ tie. Pe lâng ˘a asta, Linux este singurul de sistem de operare care nu
are viru¸ si care pot influen¸ ta mecanismul de func¸ tionare al aplica¸ tiilor.
Toate elementele folosite de-a lungul procesului de dezvoltare sunt cele mai stabile la
momentul actual deoarece ofer ˘a suport ¸ si fiabilitate foarte mare. Trebuie precizat faptul,
c˘a f˘ar˘a ajutorul acestora, platforma nu ar func¸ tiona la parametri dori¸ ti ¸ si ar fi perturbat ˘a
func¸ tionalitatea.
Odat ˘a cu finalizarea aplica¸ tiei, consider oportun aportul adus în domeniul dezvoltat ¸ si
totodat ˘a men¸ tionez c ˘a aplica¸ tia func¸ tioneaz ˘a în regim de dezvoltate la beneficiar. În final,
trebuie precizat faptul c ˘a tema aleas ˘a, conform celor amintite anterior, este una justificat ˘a
în raport cu cuno¸ stin¸ tele dobândite în limbajul de programare Java.

Capitolul 1
NO¸ TIUNI INTRODUCTIVE
În cadrul capitolului 1 o s ˘a fie eviden¸ tiate, dup ˘a cum sugereaz ˘a ¸ si titlul, no¸ tiuniile ¸ si
elementele care au stat la baza dezvolt ˘arii aplica¸ tiei propriu-zise aferente proiectului
sus¸ tinut de c ˘atre centrul de cercetare INCESA. Toate elementele cheie care definesc Java
Enterprise Edition sau Alfresco o s ˘a fie prezentate într-o manier ˘a schematic ˘a ¸ si organizat ˘a
pentru o în¸ telegere mai bun ˘a a arhitecturii.
Utilitarul folosit pentru dezvoltarea platformei IT de comunicare intern ˘a INCESA este
Alfresco care asigur ˘a un flux ¸ si un management de document care ruleaz ˘a în timpi optimi,
indiferent de volumul de date care este angrenat la nivelul centrului INCESA. Platforma
open-source a fost adaptat ˘a ¸ si optimizat ˘a conform cerin¸ telor oferite, astfel încât partea de
persisten¸ t ˘a care comunic ˘a cu baza de date s ˘a asigure transmiterea documentelor ata¸ sate
într-un timp normal.
Java Enterprise Edition este o platform ˘a care înglobeaz ˘a o serie de elemente sau
tehnologii care pot fi abordate ¸ si folosite dup ˘a voin¸ ta programatorului astfel încât s ˘a se
mapeze pe cerin¸ te. Modific ˘arile survenite la nivel de programare au fost realizate atât la
nivel front-end cât ¸ si pe back-end.
1.1 Java Enterprise Edition
Java Enterprise Edition (Java EE) este o platform ˘a foarte cunoscut ˘a ¸ si foarte
folosit ˘a care utilizeaz ˘a limbajul de programare Java orientat obiect. Java EE furnizeaz ˘a un
API care implic ˘a: maparea rela¸ tional ˘a de obiecte, arhitecturi distribuite sau pe mai multe
nivele ¸ si servicii web. Componentele care sunt implicate la nivelul platfomei sunt bazate
3

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 4
pe componente modulare care ruleaz ˘a pe un server de aplica¸ tie. Totodat ˘a, pe lâng ˘a
conven¸ tiile aplicabile la nivel de front-end mai se pot aduce în discu¸ tie ¸ si conven¸ tiile care
descriu adnot ˘ari sau configura¸ tii suprascrise op¸ tional cu ajutorul XML.1
Prescurtarea corect ˘a a denumirii platformei Java Enterprise Edition este J2EE¸ si nu
JEE. Denumirea JEE nu este acceptat ˘a de speciali¸ sti, ace¸ stia luând în calcul doar
posibilitatea nota¸ tiei de Java EE având cuvântul Java scris neprescurtat. Atunci când
platforma Java a fost introdus ˘a pentru prima oar ˘a, a fost numit ˘a Java 2 Platform,
Enterprise Edition, cu abrevierea J2EE. Când s-a revizuit denumirea platformei Java, nu
s-a renun¸ tat doar la 2. Unul dintre motivele majore pentru care s-au schimbat denumirile
platformelor este c ˘a s-a vrut s ˘a se sublinieze c ˘a toate acestea fac parte din familia Java.
Vechile nume ale J2EE,J2S E¸ siJ2MEnu fac asta.
Java EE este una din cele mai robuste platforme care are la baz ˘a dezvoltarea de aplica¸ tii
de întreprindere, pe mai multe nivele, care folosesc limbajul de programare Java. Platforma
este într-o continu ˘a îmbun ˘at˘a¸ tire datorit ˘a experien¸ tei acumulate de dezvoltatori care duce
în final la apari¸ tia de noi standarde. Odat ˘a cu apari¸ tia tehnologiei Internet, a ap ˘arut dorin¸ ta
de a putea vizualiza un con¸ tinut dinamic în pagini Web. De aici, s-a conturat ideea de a
dezvolta portabilitatea ceea ce implic ˘a limbajul Java la nivelul serverelor de aplica¸ tie ¸ si
ideea de a aprofunda dezvoltarea orientat ˘a pe componente sau separarea containerelor.2
Java EE este de fapt o colec¸ tie de tehnologii ¸ si API-uri pentru platforma Java conceput ˘a
pentru a sprijini aplica¸ tiile Enterprise, care pot fi în general clasificate ca aplica¸ tii la scar ˘a
larg˘a, distribuite, tranzac¸ tionale ¸ si extrem de accesibile, concepute pentru a sus¸ tine cerin¸ tele
de afaceri critice.
În ceea ce privesc tehnologiile ¸ si metodologiile care vor sta în spatele program ˘arii,
acestea sunt greu de rezumat înainte de a afla cerin¸ tele. Trebuie s ˘a existe o schem ˘a logic ˘a
bine gândit ˘a înainte de a începe munca propriu-zis ˘a, asta ¸ si datorit ˘a faptului c ˘a API-urile
au continuat s ˘a se schimbe în ultimii cinci ani. Tranzac¸ tiile ¸ si distribu¸ tia sunt esen¸ tiale.
1.1.1 Arhitectura
Arhitectura Java EE ofer ˘a servicii care simplific ˘a cele mai frecvente provoc ˘ari cu care
se confrunt ˘a dezvoltatorii atunci când construiesc aplica¸ tii moderne, în multe cazuri prin
1https://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition
2Cursul 8 – Integrarea sistemelor informatice, Academia de Studii Economice Bucure¸ sti

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 5
interfe¸ te API, se simplific ˘a utilizarea modelelor de design ¸ si a celor mai bune practici
acceptate de industrie.
O provocare comun ˘a cu care se confrunt ˘a dezvoltatorii enterprise este modul în care se
pot gestiona cererile venite din partea clien¸ tilor web. Pentru a simplifica aceast ˘a provocare,
Java EE furnizeaz ˘a API-urile Servlet ¸ si JavaServer Pages (JSP), care sunt metode pentru
activit ˘a¸ ti cum ar fi aflarea unui utilizator tastat într-un câmp text, într-un formular online
sau stocarea unui cookie pe browser-ul unui utilizator.
Java Persistence API (JPA) faciliteaz ˘a, de asemenea, prin mecanismul de mapare a
datelor, în cadrul unui program, stocarea informa¸ tiilor în tabele ¸ si a rândurilor dintr-o baz ˘a
de date. Pe lâng ˘a API-urile de care am amintit anterior, un alt API foarte important care
trebuie eviden¸ tiat ar fi API care simplific ˘a munca de creare de servicii web sau
componente logice scalabile. Acest API este cel care are în prim-plan partea de
Enterprisee JavaBeans (EJB). Toate aceste API-uri sunt bine testate, cu beneficii pentru
dezvoltatorii Java cu scopul de a înv ˘a¸ ta ¸ si simplifica foarte mult unele dintre cele mai
dificile p ˘ar¸ ti ale dezvolt ˘arii.3
Arhitectura Java EE are la baz ˘a: Java Server Pages (JSP), Servlets ¸ si servicii Web
incluse în container-ul Web, JavaBeans (EJB) incluse în container-ul EJB iar la nivelul
containerelor Applet ¸ si Client se g ˘asesc elementele cu ar fi HTML sau APPLET. Aceste
no¸ tiuni sunt eviden¸ tiate în figura 1.1.
Dezvoltarea în ceea ce prive¸ ste portabilitatea ¸ si conectivitatea bazelor de date în re¸ tea,
s-a produs odat ˘a ce Internet-ul a ap ˘arut. Cele mai mari evolu¸ tii au fost contorizate în rândul
produselor Oracle care o vreme îndelungat ˘a au dezvoltat facilit ˘at˘a¸ ti pentru bazele de date
rela¸ tionale. Pentru a umple golul rezultat în urma avans ˘arii tehnologiilor, în ultimul timp,
Oracle a exploatat componentele necesare construirii unor aplica¸ tii destul de complicate
bazate pe un mediu distribuit.
Componentele care sunt incluse într-un fi¸ sier HTML ¸ si care coloboreaz ˘a cu ma¸ sina
virtual ˘a sunt Applet-urile care sunt interpretate de un browser ¸ si care sunt responsabile de
crearea interfe¸ tei cu utilizatorul pentru aplica¸ tiile care sunt descrise de c ˘atre Oracle Forms
Developer. Mecanismul de execu¸ tie al unui Applet este destul de simplu, aceast ˘a
component ˘a fiind preluat ˘a de c ˘atre ma¸ sina virtual ˘a inclus ˘a în browser sau de c ˘atre un
Viewer. Java RuntimeEnvironment (JRE) este o combina¸ tie ce are la baz ˘a dou ˘a
componente de sine st ˘at˘atoare ¸ si anume ma¸ sina virtual ˘a Java (JVM) ¸ si fi¸ siere suport.
Servlet-urile sunt module script Java care ajut ˘a la construirea unor pagini Web
3Margaret Rouse- The Java Platform, Enterprise Edition
4Java Platform, Enterprise Edition(Java EE) Specification, v7

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 6
Figura 1.1: Arhitectura Java EE4
dinamice aferente unor servere Web care pot s ˘a se conecteze ¸ si s ˘a prelucreze informa¸ tia în
mod dinamic. Diferen¸ ta între mecanismul din spatele Servlet-ului ¸ si mecanismul Common
Gateway Interface (CGI) este prin faptul c ˘a cererea clientului este men¸ tinut ˘a în sesiune
spre deosebire de crearea unui nou proces pe server care st ˘a la baza CGI.
Java Server Pages (JSP) este, de asemenea, o tehnologie important ˘a, care o s ˘a fie
descris ˘a în profunzime într-un capitol special destinat tehnologiilor folosite. JSP este
considerat ˘a o interfa¸ t ˘a pentru aspect ¸ si amplasare care gestioneaz ˘a partea de front-end ¸ si
mai pu¸ tin partea de back-end unde sunt manipulate datele dinamice.
JavaBeans sunt programe portabile ¸ si reutilizabile care ajut ˘a la modificarea interfe¸ tei
cu utilizatorul prin definirea de obiecte de tip Bean Area care permit g ˘azduirea de
componente de acest tip rulate pe Web. Trebuie avute în vedere mai multe reguli atunci
când se folosesc JavaBeans precum utilizarea unui limbaj bazat pe case-sensitive iar calea
fi¸ sierul s ˘a aib ˘a în componen¸ t ˘a calea complet ˘a. O remarc ˘a foarte important ˘a este accea c ˘a
JavaBeans nu înseamn ˘a sau nu semnific ˘a din punct de vedere informatic Enterprise
JavaBean (EJB).
Diferen¸ ta considerabil ˘a între cele dou ˘a no¸ tiuni este prin faptul c ˘a EJB nu rezolv ˘a func¸ tii
de interfa¸ t ˘a cu utilizatorul, ci scopul acestuia este de a încapsula sau de a distribui logica
Java stabilit ˘a ¸ si prezent ˘a în legatura care este înterprins ˘a de servere.

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 7
Modulele EJB care ofer ˘a servicii la distan¸ t ˘a clien¸ tilor pot fi de mai multe tipuri:
orientate pe sarcini, orientate pe mesaje sau orientate pe baza de date care asigur ˘a
persisten¸ ta datelor cu mecanismele specifice EJB. Pe lâng ˘a avantajul conferit de EJB, alte
avantaje care se mai pot considera foarte importante ar fi arhitectura, gestionarea
tranzac¸ tiilor ¸ si administrarea conexiunilor.5
1.1.2 Core
Atunci când vorbim de core-ul Java Enterprise Edition, ne referim, dup ˘a cum sugereaz ˘a
¸ si traducerea, la creierul care coordoneaz ˘a activitatea Java EE. De obicei, prima idee la
care se gânde¸ ste un programator atunci când aude termenul eviden¸ tiat anterior, se refer ˘a
la componentele Java SE, platform ˘a care a ajutat la dezvoltarea platformei Java EE. Orice
este redactat de un programator în codul revizuit în utilitar software, are la baz ˘a core-ul
Java.
Java EE se pliaz ˘a pe modelul care include ¸ si are la baz ˘a tehnologia Java EE constituit ˘a
din numeroase API-uri (EJB, JSF, JMS, JTA, JPA ¸ si a¸ sa mai departe) ¸ si numeroase servere
de aplica¸ tie (Tomcat, Jboss, Weblogic) care au rolul de a implementa aceste API-uri. În
urm˘atorul capitol o s ˘a fie dezvoltate caracteristici legate de func¸ tionalitatea serverului de
aplica¸ tie Tomcat care sus¸ tine API-urile din spatele Alfresco.
Specifica¸ tiile Java EE sunt administrate ¸ si conturate în cadrul Java Community Process,
un mecanism care permite dezvoltatorilor s ˘a utilizeze specifica¸ tii tehnice standard pentru
tehnologia Java. Trebuie precizat faptul c ˘a rezultatul acestui mecanism care st ˘a la baza Java
Community Process este sus¸ tinut de Java Specification Request (JSR) în conformitate cu
toate extensiile limbajului de programare Java sau a mediului de lucru.
Tehnologiile de baz ˘a Java EE se încadreaz ˘a în linii mari în categoriile urm ˘atoare:
Tehnologii client HTTP: Java EE include API-ul Java pentru programarea
WebSocket, un API pentru procesarea JSON, API-urile JSF, Servlet ¸ si JSTL (JSP
Standard Tag Library);
Tehnologii care implic ˘a baze de date ¸ si acces la resurse. Pentru interac¸ tiunea cu
sistemele externe ¸ si back-end, Java EE include JavaMail, o arhitectur ˘a standard a
conectorilor, un API Java Message Service (JMS) ¸ si un Java Transaction API (JTA);
5Interfa¸ tarea cu bazele de date folosind Java, http://www.rasfoiesc.com

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 8
Tehnologii REST ¸ si servicii web: Pentru a ajuta la dezvoltarea ¸ si implementarea
serviciilor web bazate pe REST, SOAP, XML ¸ si JSON, sunt utilizate API-urile Java
pentru servicii Web RESTful Web (JAX-RS) ¸ si servicii web bazate pe XML (JAX-
WS), împreun ˘a cu API-urile pentru mesajele XML ¸ si registrele XML (JAXR);
Managementul securit ˘a¸ tii ¸ si gestionarea containerelor Java EE: Pentru
implementarea securit ˘a¸ tii personalizate Java EE ¸ si gestionarea containerelor Java
EE, dezvoltatorii de software au acces la interfa¸ ta furnizorilor de servicii de
autentificare Java pentru containere.
1.1.3 Modelul de dezvoltare al aplica¸ tiilor
Aplica¸ tiile Java EE au la baz ˘a limbajul de programare Java ¸ si ma¸ sina virtual ˘a Java care
ofer˘a un nivel înalt de portabilitate, scalabilitate ¸ si eficien¸ t ˘a. Java EE ofer ˘a de cele mai multe
ori suport pentru aplica¸ tiile care descriu servicii benefice angaja¸ tilor, clien¸ tilor, partenerilor
¸ si furnizorilor. Aplica¸ tiile de acest tip sunt foarte complexe ¸ si deseori sunt folosite diferite
platforme iar rezultatele poate fi transmise la mai mul¸ ti clien¸ ti. Partea logic ˘a a aplica¸ tiei
beneficiaz ˘a de hardware dedicat ¸ si are acces complet la resurse.
Modelul Java EE define¸ ste o arhitectur ˘a de implementare a serviciilor ca fiind aplica¸ tii
pe mai multe nivele. În acest sens, munca acumulat ˘a aferent ˘a arhitecturii se împarte în dou ˘a
p˘ar¸ ti:
Logica ¸ si reprezentarea aplica¸ tiei care sunt redactate de dezvoltator;
Serviciile standard ale sistemului.
O aplica¸ tie Java EE este alc ˘atuit˘a din mai multe componente care au mecanism cu
func¸ tionalitate distinct ˘a. Nivelele descrise de modelul de aplica¸ tie atribuit Java EE sunt:
nivelul client: con¸ tine elemente care sunt executate pe sistemul clientului
nivelul web: con¸ tine elemente care sunt executate pe serverul Java EE
nivelul business: con¸ tine elemente care implementeaz ˘a logica aplica¸ tiei
nivelul EIS (Enterprise Information System): software executat pe serverul EIS

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 9
Figura 1.2: STRUCTURA MODELULUI DE DEZVOLTARE6
Mecanismul dup ˘a care func¸ tioneaz ˘a acest model se rezum ˘a astfel: Un utilizator va
accesa o pagin ˘a JSP care va avea ni¸ ste metadate pe care, acesta din urm ˘a, le va completa.
Toate aceste informa¸ tii transmise de utilizator vor ajunge la controller unde este scris
codul din back-end. Controller are datoria de a comunica cu baza de date prin modele.
Rezultatele primite din baz ˘a o s ˘a fie mapate într-un model a c ˘arui component ˘a va fi
verificat ˘a, în cele din urm ˘a de controller care le va transmite la JSP.
Aceast ˘a metod ˘a care separ ˘a partea vizual ˘a de ceea func¸ tional ˘a are la baz ˘a aplica¸ tiile
web care se bazeaz ˘a la modul general pe request ¸ si response. Tehnologia la nivelul vizual,
cu certitudine r ˘amâne JSP care este foarte stabil ˘a ¸ si reac¸ tioneaz ˘a ca un tip de document de
ie¸ sire.
La nivelul func¸ tional de back-end b ˘at˘alia este strâns ˘a deoarece atât componenta servlet
cât ¸ si componenta controller de¸ tin avantaje ¸ si dezavantaje considerabile. Marele beneficiu
al componentei servlet ar fi incorporarea în ceea mai mare parte a protocolului HTTP dar
pentru cele mai multe framework-uri este utilizat ˘a componenta controller.
Odat ˘a cu existen¸ ta MVC, dezvoltatorii au flexibilitate datorit ˘a separ ˘arii elementelor
specifice aplica¸ tiei pe care o implementeaz ˘a. Astfel, programatorii pot s ˘a lucreze în paralel,
la componenta lor, la care au fost atribui¸ ti s ˘a-¸ si exercite cuno¸ stin¸ tele. Fluxul de informa¸ tii
este foarte important atunci când se programeaz ˘a în paralel.
Una din cele mai mari probleme care apar prin folosirea modelului MVC este folosirea
unui num ˘ar mare de componente servlet. În acest sens, pentru a rezolva aceast ˘a problem ˘a, s-
a creat o structur ˘a care are la baz ˘a o combina¸ tie de clase care s ˘a fie o parte din infrastructura
ce implic ˘a servlet-ul. Un servlet are numeroase responsabilit ˘a¸ ti pe care trebuie s ˘a le rezolve
6Alexandru Bugnar – Dezvoltare de aplica¸ tii web în limbajul Java

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 10
în func¸ tie de necesitate.
Aceste cerin¸ te pe care le rezolv ˘a un servlet sunt rezumate la: crearea de instan¸ te de
clase, s ˘a preia ce se transmite prin cererea utilizatorului sau s ˘a transmit ˘a rezultatul la alte
resurse.
Un mare dezavantaj al componentei servlet care are ca super-clas ˘a clasa Action este
întâlnit în momentul în care pe sesiune ac¸ tioneaz ˘a mai mul¸ ti d ¸eoarece ace¸ stia r ˘amân în
memorie pân ˘a când vor fi ¸ ster¸ si de pe serverul de aplica¸ tii.
Metoda garbage collector este foarte util ˘a unui programator deoarece reu¸ se¸ ste s ˘a-l ajute
prin controlul pe care il ofer ˘a în profunzime la ce resurse un utilizator are acces.
1.1.4 Tehnologii web ¸ si API-uri
Când vine vorba de tehnologii, atât pentru programarea desktop cât ¸ si pentru
programarea mobile sau web, tehnologiile sunt foarte vaste. Cerin¸ tele în ceea ce privesc
cuno¸ stiin¸ tele acumulate de un progamator sunt destul de mari iar tehnologiile cunoscute,
cu cât sunt mai mult cunoscute cu atât mai bine pentru un programator de-a lungul
carierei. Categoriile în care se împart aceste tehnologii sunt:
Cuno¸ stin¸ te despre protocolul HTTP : este foarte important pentru un dezvoltator s ˘a
cunoasc ˘a mecanismul din spatele cereri /r˘aspunsul HTTP func¸ tional pe internet;
Expresii regulate (regex) : sunt forme flexibile care definesc pattern-uri de ¸ siruri
de caractere. Mai concret, aceste regex sunt folosite pentru a valida, în special în
javascript, ¸ siruri de caractere care vin pe request de pe un form apar¸ tinând front-
end. De obicei, se dore¸ ste, spre exemplu pe request primirea unui ¸ sir aferent unui
câmp format doar din litere sau doar cifre sau se dore¸ ste validarea unei adrese de
mail sau unui cod numeric personal. Toate aceste proceduri sunt asigurate cu ajutorul
mecanismului de regex;
Design patterns : o defini¸ tie care ar rezuma ceea ce înseamn ˘a no¸ tiunea de design
patterns enun¸ tat ˘a în limba englez ˘a ar fi solu¸ tii standard pentru probleme standard.
Atunci când se aduce în discu¸ tie no¸ tiunea de design patterns, programatorul se
love¸ ste de cele mai multe ori de programarea orientat ˘a obiect. Dac ˘a pentru
rezolvarea unei probleme care sus¸ tine no¸ tiunea de sortare trebuie folosit un algoritm
care ajut ˘a la asta, în cazul în care se dore¸ ste crearea unui singur obiect, se va folosi

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 11
design-ul pattern-ului singleton care se bazeaz ˘a pe conceptul, amintit anterior, de
crearea unei singure instan¸ te de obiect;
Tehnologii de front-end : sunt foarte importante deoarece pe parcursul dezvolt ˘arii
aceast ˘a parte este în strâns ˘a leg ˘atur˘a cu partea de back-end. Pentru o bun ˘a în¸ telegere
a mecanismului de func¸ tionare a unei aplica¸ tii, trebuie cunoscute ¸ si elemente sau
tehnologii precum CSS sau Javascript;
Framework-uri Java pentru web : în principal un framework reprezint ˘a o colec¸ tie
de clase care impun scrierea într-o anumit ˘a manier ˘a pe care o dicteaz ˘a. De cele mai
multe ori, pentru a dezvolta o aplica¸ tie complex ˘a, ai nevoie mare de aceste
framework-uri, deoarece odat ˘a cu absen¸ ta lor, codul va deveni foarte rigid.
Framework-uri gen Spring, Hibernate o s ˘a schimbe structura ¸ si mecanismul de
scriere a codului realizat dar va asigura pe termen lung un succes spontan.
Dezvoltarea aplica¸ tiilor web în Java are în prim-plan o evolu¸ tie spectaculoas ˘a bazat ˘a
pe evenimente care au evoluat de-a lungul timpului foarte mult. Un prim exemplu bun
ar fi World Wide Web care a avut o dezvoltare foarte mare, având la început o metod ˘a
care producea pagini statice care s-a dovedit insuficient ˘a odat ˘a cu necesitatea paginilor
dinamice. În acest sens, pentru a satisface dorin¸ tele de atunci care aveau în prim-plan pagini
dinamice, s-a realizat ¸ si s-a dezvoltat tehnologia Java pentru web care are la baz ˘a servlet-ul
¸ si JSP.7
Programatorii g ˘asesc, dup ˘a cum s-a precizat într-un capitol destinat modelelor
dezvoltate în Java EE, un model greu care s ˘a se plieze nevoilor la acel moment.
Dezvoltatorii care utilizeaz ˘a alt limbaj de programare consider ˘a acest factor destul de greu
de realizat.
Ini¸ tial, primii pa¸ si f ˘acu¸ ti în acest sens au fost de a utiliza servlet-ul pentru pagini cât mai
dinamice. Odat ˘a cu trecerea timpului, s-a dovedit faptul c ˘a prin folosirea acestora se scrie
prea mult cod în cadrul paginilor HTML ¸ si acest lucru nu era deloc convenabil atunci când
la un proiect lucreaz ˘a mai multe persoane deoarece nu se pot delimita task-urile fiec ˘aruia.
Trebuie precizat faptul c ˘a parcurgea ce implic ˘a o pagina HTML este destul de
costisitoare din punct de vedere al resurselor, în special pentru CPU ¸ si astfel s-a ajuns la
adaptarea ¸ si folosirea tehnologiei JSP. Marele avantaj generat de tehnologia JSP, spre
deosebire de HTML, este remarcat prin faptul c ˘a o pagina JSP este parcurs ˘a o singur ˘a
dat˘a.
7Arsenalul unui programator web Java, http://www.lec-academy.ro

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 12
În figura urm ˘atoare o s ˘a fie schematizate cele mai importante tehnologii sau API-uri
care stau la baza Java EE ¸ si care fac parte din mecanismul de func¸ tionare Java. Acestea o
s˘a fie abordate, în parte, pentru cunoa¸ sterea tuturor elementelor care le definesc.
Figura 1.3: TEHNOLOGII ¸ SI API-URI JA V A EE8
Java Server Pages (JSP)
O pagin ˘a JSP, spre deosebire de una HTML, con¸ tine tag-uri sau elemente noi sub
form ˘a de ac¸ tiuni standard, directive sau cod Java. Exist ˘a multe func¸ tionalit ˘a¸ ti între PHP
(Programmable /Professional Hypertext Processor), ASP(Application Server Pages) ¸ si JSP,
pe care un programator poate s ˘a le identifice dar diferen¸ ta mare între ele este prin faptul c ˘a
JSP folose¸ ste limbajul de programare Java.
Atât ASP cât ¸ si PHP folosesc specificarea intercalat ˘a ce implic ˘a elemente statice ¸ si
dinamice prin scripting. Pentru a executa o pagin ˘a JSP, dup ˘a cum bine se cunoa¸ ste, trebuie
s˘a se aib ˘a în vedere prezen¸ ta unui server web compatibil cu container-ul de servlet, a¸ sa cum
este serverul de Tomcat pentru Alfresco.
Mecanismul ¸ si concep¸ tia din spatele unui JSP pentru o cerere care provine de la partea
aceast ˘a de view este definit de transformarea în servlet. Deci practic vorbind, în spatele
transmiterii acestei cerreri, JSP transmite o cerere transpus ˘a în servlet.
Trebuie re¸ tinut ¸ si un element foarte important care descrie JSP ¸ si anume faptul c ˘a toate
prelucr ˘arile legate de paginile respective se fac pe server ¸ si nu ajung sub nicio form ˘a la
client direct.
8Lect. dr. Stelian Mihala¸ s – Tehnologii de dezvoltare web

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 13
Atât codul generat în paginile JSP cât ¸ si instan¸ tele de obiecte sunt prelucrate în cadrul
ma¸ sinii virtuale Java aflate pe server. Un factor important pentru în¸ telegerea mecanismului
din spatele paginilor JSP este deployment-ul. Acest deploy se refer ˘a la faptul c ˘a orice JSP
înainte de a fi rulat trebuie obligatoriu instalat (deploy) pe serverul web. F ˘ar˘a a avea aceste
resurse pe server, aceste JSP nu func¸ tioneaz ˘a ¸ si astfel sunt generate erori. JSP-urile se
g˘asesc într-o form ˘a arhivat ˘a cu extensia .jar sau .war.
Pe lâng ˘a caracteristicile enun¸ tate anterior, Java Servlet Pages permite descrierea unei
aplica¸ tii Web distribuite, specificând într-un singur document atât partea de server cât ¸ si pe
partea de client.
Partea dinamic ˘a se deosebe¸ ste de partea static ˘a vizual deoarece se remarc ˘a elementele
care le definesc, respectiv pentru partea dinamic ˘a se pot observa elemente de script cum ar
fi<%% >sau <jsp:::: > iar partea static ˘a poate fi considerat ˘a aceea parte care poate fi
rulat ˘a de sine st ˘at˘atoare ca un fi¸ sier HTML.
JSP fiind o extensie a tehnologiei abordate în cele ce urmeaz ˘a, ¸ si anume Servlet, permite
elaborarea de aplica¸ tii în stil HTML sau XML. Toate paginile JSP, având extensia .jsp sunt
plasate în zona de webapp unde se g ˘ase¸ ste contextul aplica¸ tiei pentru servlet.
Servlet-ul din spatele JSP este apelat doar în momentul în care clasa JSP este
modificat ˘a.
Acest mecanism de func¸ tionare al JSP este exemplicat în urm ˘atoarea figur ˘a.
Figura 1.4: FUNC ¸ TIONALITATE JSP9
Codul JSP poate fi inserat dac ˘a exist ˘a anumite tag-uri specifice JSP. Aceste tag-uri sunt
ni¸ ste elemente JSP specifice care se g ˘asesc sub trei forme:
9Tehnologii web, Universitatea Tehnic ˘a Cluj-Napoca

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 14
<%=expression %>; < %code %>; < %!code %>.
Expresiile JSP sunt evaluate, convertite în ¸ sir de caractere ¸ si trimise c ˘atre ie¸ sire.
Spre exemplu, pentru a afi¸ sa timpul curent în cadrul aplica¸ tiei java se va scrie
urm˘atoarea linie de cod:
<%=new java :util:Date ()% >
Pe lâng ˘a expresii, JSP con¸ tine ¸ si foarte multe obiecte predefinite care simplific ˘a scrierea
expresiilor ¸ si a por¸ tiuniilor de cod. Aceste obiecte predefinite sunt:
Request este un obiect de tip HttpServletRequest care înglobeaz ˘a parametrii cererii.
Parametrii aminti¸ ti anterior sunt prelua¸ ti în aplica¸ tie prin metoda getParameter ¸ si
depind în mare parte de tipul cererii ¸ si de header-ul primit. Utilizatorul, folosind
request, poate solicita cookies prin request.getCookies();
Response este un obiect de tip HttpServletResponse care corespunde r ˘aspunsului
transmis c ˘atre client. Prima sarcin ˘a pe care response o are este de a seta status code
¸ si header-ul r ˘aspunsului c ˘atre client. Prin response.addCookie() se pot trimite cookies
c˘atre browser;
Out este un obiect derivat de la JSPWriter care are la baz ˘a o versiune bu er a lui
PrintWriter. Acest mecanism permite transmiterea de octe¸ ti c ˘atre client deoarece are
la baz ˘a o ajustare a dimensiunii bu er-ului ¸ si de golire a acestuia. Acest obiect este
folosit mai rar;
Session este un obiect de tip HttpSession ob¸ tinut prin metoda getSession(true).
Sesiunea este creat ˘a automat, cum este specificat mai sus ¸ si poate fi folosit ˘a explicit;
Application este un obiect de tip ServletContext ob¸ tinut prin
getServletConfig().getContext(). Metoda removeAttribute ¸ sterge din memorie
obiectul ¸ si elibereaz ˘a numele asociat al acestuia;
Page este o necesitate atunci când în cod apar ¸ si alte limbaje script decât Java. Acest
obiect este acela¸ si lucru cu instan¸ tierea unei pagini JSP;
Config este de tip ServletConfig pentru pagina curent ˘a ¸ si este folosit pentru faza de
ini¸ tializare;
PageContext este o clas ˘a introdus ˘a de JSP care încapsuleaz ˘a o serie de facilit ˘a¸ ti ce
caracterizeaz ˘a pagina la un moment dat;

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 15
Exception implic ˘a java.lang.Throwable indicând o eroare care apare la un apel eronat
al paginii.
Java Servlet
Servlet-ul are un con¸ tinut dinamic care poate fi folosit, de exemplu, de applet-uri care
utilizeaz ˘a aceste elemente dinamice.
Prima tehnologie cu caracter dinamic, descoperit ˘a la nivel de server web a fost Common
Gateway Interface (CGI) care are la baz ˘a un standard pentru rularea programelor externe
de pe server-ul web. De exemplu, pentru accesarea informa¸ tiilor dintr-o baz ˘a de date, cu
ajutorul unui script CGI se vor forma scripturi cunoscute pe mediul WWW.
Un servlet este o clas ˘a care implementeaz ˘a interfa¸ ta Servlet sau, în cele mai multe
cazuri, extinde clasa HttpServlet. Din punct de vedere practic, servlet-ul proceseaz ˘a cererile
clien¸ tilor, utilizând func¸ tionalitate bazat ˘a pe nivele oferite de server sau pe servicii de baze
de date.
Componenta servlet este gestionat ˘a de un container care ofer ˘a independen¸ t ˘a de
platform ˘a ¸ si mai permite folosirea paradigmei cerere-r ˘aspuns bazat ˘a pe protocolul
Hypertext Transport Protocol (HTTP). Container-ul este responsabil de gestionarea
sevlet-urilor pe care le de¸ tine în subordine, odat ˘a ce server-ul web este ac¸ tionat.
Figura 1.5: FUNC ¸ TIONALITATE SERVLET10
Procesul exemplificat în figura 1.5 func¸ tioneaz ˘a astfel: un browser web acceseaz ˘a un
server web ¸ si transmite o cerere HTTP care este preluat ˘a de c ˘atre serverul web ¸ si în cazul
în care este destinat ˘a unui servlet, este transmis ˘a mai departe c ˘atre un container de servlet.
10Tehnologii web, Universitatea Tehnic ˘a Cluj-Napoca

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 16
Container-ul are un rol foarte important deoarece decide c ˘arui servlet ii este adresat ˘a
cererea ¸ si ii va transmite ca parametrii dou ˘a obiecte: request ¸ si response. Dup ˘a ce request-ul
a ajuns la servlet, acesta va analiza cererea f ˘acut˘a de client ¸ si o va rezolva, trimi¸ tând c ˘atre
client un r ˘aspuns prin intermediul obiectului response.
Structura unui servlet care afi¸ seaz ˘a mesajul Diserta¸ tie este sub forma urm ˘atoare:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println (" <html>");
out.println ("<body> "`);
out.println ("<h2>Disertatie </h2> ");
out.println ("</body>");
out.println ("</html>"');}
Metoda GET este folosit ˘a pentru interogarea aplica¸ tiei din server ¸ si poate con¸ tine un
num˘ar redus de date.
Pe lâng ˘a asta, metoda este folosit ˘a, în special, pentru interogarea aplica¸ tiei din serverul
care poate de¸ tine un num ˘ar mic de date. În special, în cadrul unei metode GET se g ˘ase¸ ste
o adresa URL a unei resurse ¸ si o serie de parametrii asocia¸ ti resursei.
Metoda POST are în prim-plan modificarea sau editarea unei resurse ¸ si con¸ tine mai
multe date decât metoda GET.
Func¸ tiile unui servlet sunt realizate în cadrul a dou ˘a metode generale doGet sau doPost,
una dintre cele dou ˘a fiind exemplificat ˘a anterior. Rolul acestor func¸ tii este de a asigura cu
informa¸ tie sustras ˘a din mediul extern, bazele de date, în func¸ tie de cerin¸ tele venite de la
client.
Dup˘a cum am precizat ¸ si anterior, un servlet este controlat în întregime de c ˘atre un
container care prime¸ ste aceast ˘a cerere de la client ¸ si realizeaz ˘a pa¸ sii urm ˘atori: în cazul în
care nu exist ˘a o instan¸ t ˘a a clasei, container-ul o creaz ˘a ¸ si o ini¸ tializeaz ˘a prin func¸ tia init().

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 17
Ultima prelucrare sus¸ tinut ˘a de c ˘atre container este folosirea metodei service () care ajut ˘a
la transmiterea unui obiect HttpServletRequest sau al unui obiect HttpServletResponse. În
cazul în care obiectul trebuie distrus, se folose¸ ste metoda destroy().
În ceea ce prive¸ ste partea de cerere HTTP, o s ˘a fie abordat ˘a ¸ si exemplificat ˘a structura
complet ˘a, într-un capitol urm ˘ator pentru a vizualiza în detaliu mecanismul din spatele unei
cereri HTTP.
Java Server Pages Standard Tag Library (JSTL) este o bibliotec ˘a care con¸ tine tag-
uri specifice folosite, în general, de cei care folosesc JSP pentru a avea un standard comun
în momentul în care se va scrie cod. Numeroase containere asigur ˘a suport pentru aceast ˘a
libr˘arie care con¸ tine elemente de iterare, condi¸ tionale, de procesare de documente, sau de
accesare a bazei de date. Aceste elemente, care fac parte din JSTL Core Tags, pot fi accesate
în cadrul unei paginii , prin includerea în JSP a urm ˘atoarei linii de cod:
< \% @ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" \% >
Accesul la libr ˘aria JSTL este permis imediat ce utilizatorul include în cadrul unei pagini
JSP loca¸ tia unde se g ˘ase¸ ste .jar corespunz ˘ator bibliotecii. În acest sens, se remarc ˘a faptul
c˘a pentru a utiliza aceast ˘a libr ˘arie avem nevoie de un .jar desc ˘arcat ¸ si mutat într-un folder
stabil WEB-INF /lib.
În alt caz, pentru a avea acces la JSTL, se mai poate utiliza MA VEN prin care se vor
prelua dependin¸ tele declarate în pom.
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 18
Enterprise Java Beans (EJB)
EJB este un model de dezvoltare care implic ˘a componente software folosite în scopul
comunic ˘arii componentelor Java, numite beans. Un bean este o clas ˘a Java, înglobat ˘a în
cadrul unor aplica¸ tii sau într-un editor vizual, care respect ˘a conven¸ tii de construc¸ tie.
Exist ˘a o deosebire considerabil ˘a între componentele industriale EJB ¸ si componentele
JavaBeans generale care implic ˘a logica utilizabil ˘a în afaceri sau acces la resurse externe,
cum ar fi bazele de date rela¸ tionale.
EJB, standardul pentru arhitectura componentelor la nivelul server-ului, reprezint ˘a
60% dintr-o aplica¸ tie Java EE. În momentul în care se produc modific ˘ari survenite la nivel
de func¸ tii se rezolv ˘a foarte simplu prin includerea unui EJB. Acest proces, explicat
anterior, func¸ tioneaz ˘a dup ˘a acela¸ si model ¸ si pentru implementarea unei noi func¸ tii care
implic ˘a crearea unui nou EJB.
O aplica¸ tie este actualizat ˘a pe server ¸ si în niciun caz acest proces nu este executat pe o
sta¸ tie local ˘a unde utilizatorul are acces.
Avantajele aduse de o component ˘a EJB sunt:
Arhitectura standard;
Persisten¸ ta;
Gestionarea tranzac¸ tiilor;
Administrarea conexiunilor.
Marele avantaj al EJB este asigurat ¸ si concentrat pe partea de logic ˘a a afacerii, f ˘ar˘a
a exista un interes legat de detaliile de nivel inferior, cum ar fi ciclul de via¸ t ˘a sau detalii
despre securitate. Cerin¸ tele reamintite anterior sunt transferate, într-un mod simplist de la
un server de aplica¸ tie la altul deoarece la baz ˘a se afl ˘a mecanismul de arhitectur ˘a pe niveluri.
Toate valorile de¸ tinute de o component ˘a, prin folosirea EJB, sunt m ˘asurate în
posibilitatea de putea fi reutilizate.
O component ˘a EJB mai poate fi definit ˘a ca fiind o clas ˘a Java care are variabile ¸ si metode
ce permit implementarea logicii aplica¸ tiei. Pe lâng ˘a clasa de care am amintit anterior, mai
trebuie s ˘a existe o interfa¸ t ˘a home, una remote dar ¸ si un descriptor de desf ˘a¸ surare. Modulele
EJB sunt de mai multe tipuri:
Session beans : reprezint ˘a o sesiune cu un client. Dup ˘a terminarea execu¸ tiei propriu-
zise, instan¸ ta asignat ˘a bean-ului este ¸ stears ˘a;

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 19
Entity beans au la baz ˘a date care sunt stocate ca articole în baza de date. În momentul
de fa¸ t ˘a denumirea de entity beans a fost înlocuit ˘a cu cea de persistence entities;
Message driven beans combin ˘a ideeile de baz ˘a extrase de la session bean ¸ si de la
message listener cu scopul ca o component ˘a business s ˘a primeasc ˘a mesaje asincrone.
Java Database Connectivity sau JDBC
JDBC este un API pentru limbajul de programare Java care are la baz ˘a o interfa¸ t ˘a
uniform ˘a de accesare a bazelor de date, indiferent care serviciu o s ˘a fie folosit. Aceat ˘a
conexiune între API ¸ si serviciu se face prin intermediul unor drivere. API-ul JDBC este
caracterizat de un mecanism atât de înc ˘arcare dinamic ˘a a pachetelor specifice Java cât ¸ si de
înregistrare a lor cu DriverManager.
O alt ˘a defini¸ tie concludent ˘a este tradus ˘a prin faptul c ˘a un JDBC este considerat un
produs API prin care utilizatorul care acceseaz ˘a o interfa¸ t ˘a, defapt are acces cu ajutorul
API la toate tabele sau datele atribuite s ˘a le vad ˘a.
Tehnologia folose¸ ste ca bibliotec ˘a java.sql care permite executarea de cereri SQL pentru
baze de date rela¸ tionale utilizând interfa¸ ta Java.
Odat ˘a cu accesarea JDBC, se vor crea obiecte de tip Statement care vor fi executate ¸ si
ob¸ tinute seturi de articole din baza de date (ResultSET).
Toate aceste rezultate ob¸ tinute, înglobate în obiecte de tip ResultSet pot fi parcurse cu
ajutorul unor metode specifice.
Cel mai mare avantaj în combina¸ tia dintre Java ¸ si JDBC îl reprezint ˘a portabilitatea
codului scris. Acest beneficiu este asigurat datorit ˘a limbajului de programare Java care este
unul sigur, u¸ sor de folosit ¸ si robust.
Odat ˘a ce se realizeaz ˘a conexiunea cu baza de date prin folosirea getConection() se pot
trimite secven¸ te SQL c ˘atre BD. Cele mai folosite sunt: interogarea bazei de date cu ajutorul
SELECT sau actualizare cu ajutorul INSERT, UPDATE sau DELETE.
Un exemplu concret care implic ˘a JDBC este conturat astfel:
Connection conexiune = DriverManager.getConnection(url);
Statement st = conexiune.createStatement();
ResultSet rezultat = st.executeQuery
("SELECT * FROM schema.tabel t ORDER BY t.nume");
st.executeUpdate("DELETE * FROM schema.tabel t ").

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 20
1.1.5 Servicii Web
În general, serviciile web sunt folosite în cadrul aplica¸ tiilor care au dimensiuni mari
pentru a rezolva câteva aspecte importante cum ar fi interoperabilitatea implicat ˘a în
dezvoltarea tehnologiilor middleware. Aceste tehnologii au foarte multe beneficii la baz ˘a
deoarece ajut ˘a un sistem software s ˘a se dezvolte conform ciclului normal de acest tip.
Servele de aplica¸ tii Java EE ofer ˘a servicii tradi¸ tionale care s ˘a asigure func¸ tionalitatea
optim ˘a a aplica¸ tiilor folosite de o singur ˘a companie.
Lucrurile încep s ˘a se complice când vine vorba de folosirea unui sistem software de
c˘atre mai multe companii. Acest lucru nu ar fi posibil doar utilizând un server de aplica¸ tii
ci este nevoie de mai mult ¸ si anume de servicii web.
Principalul scop al serviciilor este bazat pe un suport total asupra func¸ tionalit ˘a¸ tiilor
oferite de un alt sistem pentru ob¸ tinerea unui grad mare de interoperabilitate sau solu¸ tionare
a problemelor folosite de platforme diferite, acest mecanism fiind întâlnit ¸ si în cadrul Java
EE.
De cele mai multe ori, serviile web sunt luate în considerare atunci când o companie
are mai multe sisteme software descrise în mai multe limbaje de programare ¸ si de¸ tin la
momentul acela doar o singur ˘a platform ˘a stabil ˘a unde se pot g ˘asi aceste sisteme. Este
evident faptul c ˘a o reproiectare a tuturor sistemelor corespunz ˘atoare companiei necesit ˘a
foarte mult timp ¸ si foarte mul¸ ti bani. R ˘aspunsul cel mai bun în acest caz, ar fi folosirea
unor servicii web care s ˘a permit ˘a tuturor sistemelor s ˘a func¸ tioneze pe aceea¸ si platform ˘a,
indiferent de limbajul în care au fost scrise.
Imediat ce serviciile web vor fi folosite ¸ si mai mult de companii, acestea în cele din
urm˘a vor ajunge s ˘a înlocuiasc ˘a documentele fizice cu cele electronice. Pentru a ob¸ tine o
eficien¸ t ˘a cât mai mare, cei care au început s ˘a foloseasc ˘a serviciile web, au realizat cât de
important este s ˘a se respecte câteva reguli sau principii care stau la baza arhitecturii.
Grani¸ tele explicite, unul dintre principii, reflect ˘a, în mare parte, traversarea unor grani¸ te
care separ ˘a procesele cu scopul de conectivitate. Acest principiu poate, de foarte multe ori,
s˘a traverseze hotare ¸ si astfel costurile ¸ si complexitate în acest caz se complic ˘a dar este
solu¸ tionabil ˘a destul de repede de speciali¸ sti.
Serviciile web sunt considerate autoname deoarece nu ¸ stiu nimic despre clientul care
face o cerere de la care prime¸ ste r ˘aspuns. Acestea au un mecanism configurat de c ˘atre
administrator s ˘a execute ac¸ tiunea predestinat ˘a atâta timp cât securitatea ¸ si corectitudinea
cererii este cea corect ˘a. Singurele obiecte pe care un serviciu web le poate transmite este
mesajul de r ˘aspuns la solicitare. În acest sens, codul nu se transmite prin cadrul unui

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 21
serviciu ci doar mesajul care respect ˘a, dup ˘a cum s-a afirmat anterior, un corp de mesaj
standard.
La nivel de serviciu web exist ˘a ni¸ ste reguli de transmitere care nu implic ˘a doar
respectarea corpului mesajul ci mai implic ˘a ¸ si faptul c ˘a informa¸ tia trebuie criptat ˘a ¸ si
verificat ˘a s˘a fie primit ˘a conform formei ini¸ tiale de transmisie. Regulile pentru un serviciu
web mai înseamn ˘a ¸ si declara¸ tii care indic ˘a informa¸ tiile necesare care s ˘a implice
securitatea sau fiabilitatea la nivel de serviciu.
În principal un serviciu web nu are foarte multe diferen¸ te fa¸ t ˘a de o tehnologie
middleware, singurele atuuri ale serviciului web fiind simplitatea sau interoperabilitatea.
Pe lâng ˘a avantajele eviden¸ tiate anterior, un serviciu web mai beneficiaz ˘a de suport din
partea tuturor produc ˘atorilor de software.
Un serviciu web are la baz ˘a un sistem de mesaje standardizat XML care nu este legat la
vreun sistem de operare ¸ si care are componente reutilizabile. Standardele sau protocoalele
aflate la baza unui serviciu web sunt numeroase dar putem afirma c ˘a cel mai folosit, la
momentul actual este HTTP.
Într-o aplica¸ tie web clientul prime¸ ste un response care este reprezentat în format HTML
spre vizualizare iar în ceea ce prive¸ ste un serviciu web, response va fi transmis c ˘atre client
în format XML sau JSON.
Serviciile web, din punct de vedere tehnologic, se pot împ ˘ar¸ tii în dou ˘a mari categorii:
servicii REST (RESTful Web Services) ¸ si servicii SOAP (Simple Object Access Protocol).
Serviciile de tip REST transmit cereri de la client prin response folosindu-se de comenzi
HTTP iar request care vine de la server este transmis ca document XML sau JSON.
Celelalte servicii de tip SOAP au o form ˘a special ˘a specific ˘a SOAP unde se va expune
descrierea unei interfe¸ te API folosind WSDL (Web Service Description Language).
Clientul are un list special în acest document WSDL prin care metodele se recunosc. La
nivelul Java EE cele dou ˘a servicii web sunt codificate ¸ si recunoscute cu denumiriile
JAS-RS(REST) ¸ si JAX-WS(SOAP).
Se poate confirma faptul c ˘a serviciul SOAP este cel mai utilizat serviciu deoarece ofer ˘a
mai multe beneficii cum ar fi flexibilitatea ¸ si a¸ sa mai departe. Serviciul SOAP este cel mai
des întâlnit în schimburile de valut ˘a sau serviciile bancare.
Cel mai folosit standard de unificare la nivel de SOAP este JAX-WS care, la momentul
actual, este cel mai stabil ¸ si u¸ sor de utilizat pentru a prelua adnot ˘ari din Java. Pentru a
transmite toate informa¸ tiile de la client la server pe un flux avem nevoie, în mare parte,
de un furnizor de servicii numit Service Endpoint care rela¸ tioneaz ˘a cu clientul printr-o
interfa¸ t ˘a prietenoas ˘a numit ˘a Service Endpoint Interface SEI.

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 22
Pentru a asigura o siguran¸ t ˘a ¸ si pentru a verifica corectitudinea trimiterii de cereri de la
client la server, un interceptor (handler) folose¸ ste câteva func¸ tii predefinite pentru testare ¸ si
verificare.
Serviciul de tip SOAP care implementeaz ˘a un protocol SOAP are la baz ˘a, un
mecanism foarte des folosit de programatorii, numit JAXB (Java API for XML Binding)
care transform ˘a fi¸ sierele XML în clase Java sau invers.
Sunt multe func¸ tii pe care personal le folosesc pe parcusul program ˘arii în func¸ tie de
cerin¸ tele beneficiarilor, dar printre cele mai folosite de la JAXB sunt marshalling sau
unmarshalling. Cele dou ˘a func¸ tii opera¸ tionalizeaz ˘a fi¸ siere XML, mai exact, folosind
modele POJO cu adnot ˘ari care implic ˘a denumire de tag-uri din XM, func¸ tia marshall
extrage informa¸ tiile corespunz ˘atoare tag-urilor.
Content Management Interopeprability Services (CMIS) este o interfa¸ t ˘a specific ˘a
serviciilor web OASIS care activeaz ˘a interoperabilitatea între sistemele ECM de
management ale Alfresco. CMIS permite schimbul de informa¸ tii folosind protocoale de
internet în diferite formate pentru a asigura transmisia între companii.
Pute¸ ti utiliza metode de baz ˘a HTTP pentru a invoca metodele CMIS sau pute¸ ti utiliza
una din multele biblioteci specifice CMIS. Un astfel de exemplu pentru limbajul Java este
OpenImage Client API furnizat de proiectul Apache Chemistry. Apache Chemistry ofer ˘a
biblioteci care ofer ˘a suport pentru diferite limbaje.
1.1.6 Securitatea aplica¸ tiilor web
Odat ˘a cu apari¸ tia erei dominate de WEB 2 :0 ¸ si de no¸ tiunea de cloud, activitatea
internau¸ tilor s-a mutat în mediul web unde paginile web simple dominante de elemente
statice au devenit pagini dinamice care permit interac¸ tiunea ridicat ˘a a utilizatorului cu
aplica¸ tia.
În acest sens, imediat dup ˘a ce au fost preluate ¸ si dezvoltate tot mai mult aceste no¸ tiuni
dinamice, au ap ˘arut ¸ si primele vulnerabilit ˘a¸ ti tehnologice. Num ˘arul acestor vulnerabilit ˘a¸ ti
cre¸ ste de la an la an, cu un num ˘ar ¸ si procent destul de îngrijor ˘ator. Trebuie afirmat faptul
c˘a în urma acestor atacuri, cele mai deosebite vulnerabilit ˘a¸ ti g ˘asite de persoanele care le
execut ˘a au fost descoperite înc ˘a de la descoperirea tehnologiei. Astfel, pentru a da senza¸ tia
de cre¸ stere masiv ˘a, toate persoanele care execut ˘a astfel de mecanisme au folosit toate
vulnerabilit ˘a¸ tile descoperite la început adaptate perioadei curente.
În cele ce urmeaz ˘a, o s ˘a fie descrise cele mai importante vulnerabilit ˘a¸ ti cu scopul de a le

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 23
în¸ telege ¸ si de a fi aplicabile de oricine dezvolt ˘a soft. Vulnerabilit ˘a¸ tile care vor fi prezentate
sunt aplicabile ¸ si platformei Alfresco.
Majoritatea programatorilor nu pun foarte mare accent pe latura aceasta deoarece o
consider ˘a prea sigur ˘a ¸ si nu iau în calcul posibile atacuri deoarece nu cunosc detalii foarte
multe despre cum ar putea s ˘a decurg ˘a un atac propriu-zis. Astfel, recomandarea ar fi de a
citi cât mai multe materiale de specialitate în acest domeniu pentru clarificarea ¸ si
în¸ telegerea mecanismului din spate. Din experien¸ ta dobândit ˘a pe parcursul dezvolt ˘arii
software, recomand ca surs ˘a de inspira¸ tie documenta¸ tia disponibil ˘a la cert.ro.
Cele mai exploatate vulnerabilit ˘a¸ ti sunt:
1. SQL Injection
2. Erori logice
3. Cross-site Scripting (XSS)
4. Cross-site Request Forgery (CSRF)
Fiecare dintre cele patru, enumerate anterior, au la baz ˘a ni¸ ste atacuri mult mai
complexe, dar pentru a în¸ telege mecanismul func¸ tional de început o s ˘a fie abordate pe
rând într-un mod simplist.
SQL Injection
În momentul în care subiectul principal se refer ˘a la dezvoltarea unei aplica¸ tii web, pe
lâng˘a utilitarul care ajut ˘a programatorul pentru a scrie cod în diferite limbaje de
programare, mai trebuie luat ˘a în calcul proiectarea bazei de date. Acest lucru implic ˘a
folosirea unui sistem de gestiunea a bazelor de date (SGBD) care manipuleaz ˘a aceste date
comunicate între BD ¸ si aplica¸ tie. În cadrul Alfresco, SGBD care asigur ˘a acest mecanism
este PostgreSQL, un utilitar foarte stabil care asigur ˘a platformei open-source toate datele
necesare.
Vulnerabilitatea SQL Injection (injec¸ tie cu cod surs ˘a SQL) este folosit ˘a de un atacator
atunci când aplica¸ tia transmite, spre exemplu, o cerere cu scopul de a ob¸ tine anumite date
din BD. Atacatorul, în momentul acesta, poate introduce orice date dore¸ ste în interogarea
propriu-zis ˘a, schimbând astfel logica declara¸ tiei acesta poate s ˘a execute o ac¸ tiune diferit ˘a.
Metoda BD folosit ˘a pentru autentificarea într-o aplica¸ tie java arat ˘a astfel, spre exemplu:
String sql = "select * from schema.utilizatori u
where u.nume = "+ nume +" and u.parola = "+parola;
Statement s = conn.createStatement();
ResultSet rs = s.executeQuery(sql);

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 24
Aceast ˘a metod ˘a poate fi interpretat ˘a de un atacator ¸ si poate s ˘a o adapteze astfel încât s ˘a
treac ˘a foarte simplu de condi¸ tiile eviden¸ tiate anterior prin modificarea clauzei where, unde
se va pune utilizatorul transmis din form, cu: Eu OR 1 =1; .
Prin absen¸ ta unor valid ˘ari masive, utilizatorul poate scrie foarte simplu orice dore¸ ste în
câmpul predestinat introducerii numelui contului în cadrul unei pagini web.
M˘asurile care pot fi implementate la nivelul BD ¸ si la nivelul aplica¸ tiilor web sunt:
folosirea expresiilor regulate (REGEX) pe partea de back-end care s ˘a valideze datele
introduse la tastatur ˘a;
folosirea interoga¸ tiilor de tip PreparedStatement care utilizeaz ˘a tehnici de tip bind
variables sau folosirea unor framework-uri de acces la baza de date, care au la baz ˘a
implementarea aceleaia¸ si tehnici;
List<User> users = this.jdbcTemplate.query(
"select u.id, u.nume, u.acces "
+ "from schema.utilizator u "
+ "where u.nume = ? and u.parola = ? ",
new Object[]{nume,parola},
new UserMapper());
return users.size() == 0 ? null : users.get(0);
aplicarea separ ˘arii datelor ¸ si accesul pe baza de rol în interiorul bazei de date.
Acest ˘a m˘asur˘a implic ˘a folosirea unei func¸ tii care s ˘a verifice de fiecare dat ˘a
privilegiile de acces pe care le de¸ tine un utilizator pe tabelul în care se dore¸ ste s ˘a
ac¸ tioneze. Tabelele interne ale bazei de date, în special cele legate de managementul
conturilor ¸ si variabilelor sistemului, nu ar trebui s ˘a fie accesibile.
Erori logice
Aplica¸ tiile web folosesc logic ˘a la baz ˘a pentru a avea func¸ tionalitate. Odat ˘a ce
programatorul scrie cod într-un limbaj de programare, cum este cazul, java, acesta
abordeaz ˘a o descompunere a unui proces complex în pa¸ si mici ¸ si simpli. Toate aceste
demersuri sunt f ˘acute de programator pentru a fi pe în¸ telesul tuturor utilizatorilor de
aplica¸ tii web.
Pentru aplica¸ tiile complexe, la care lucreaz ˘a o echip ˘a mixt ˘a care adun ˘a programatori ¸ si
designeri, exist ˘a ¸ sanse destul de mari, raportându-ne la statistica de specialitate, s ˘a apar ˘a

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 25
acest tip de vulnerabilitate. Aceste erori logice pot îns ˘a ap˘area ¸ si în cadrul aplica¸ tiilor mici
care trebuie abordate cu o cantitate mare de logic ˘a în fiecare etap ˘a de proiectare.
Tipul acesta de vulnerabilitate nu are un ¸ sablon anume ¸ si în cele mai multe cazuri este
sesizabil ˘a mai greu deoarece este identificat ˘a mai greu prin lipsa unei semn ˘aturi specializate
cum este în cazul SQL Injection sau Cross-site Scripting.
Atacatorul este tentat de aceast ˘a metod ˘a de atac care implic ˘a erori logice deoarece un
programator de cele mai multe ori se gânde¸ ste doar la efectele pe care el inten¸ tioneaz ˘a s˘a
le implementeze în primul rând ¸ si omite efectele secundare.
Exist ˘a ¸ si tipuri de atacuri care prin teorie ¸ si caracteristici citite despre ele, nu se va
în¸ telege mecanismul din spate, cum este ¸ si cazul erorilor logice. În acest sens, o s ˘a fie
exemplificate câteva no¸ tiuni care implic ˘a demararea unui atac.
Ocolirea func¸ tiei pentru schimbarea parolei
Aplica¸ tia are la baz ˘a o func¸ tie pentru schimbarea parolei de c ˘atre utilizatorii finali,
completându-se câteva câmpuri necesare atunci când se va schimba parola. Aceste câmpuri
implic ˘a date referitoare la nume, parola actual ˘a sau noua parol ˘a. Aceast ˘a func¸ tie era folosit ˘a
în func¸ tie de utilizatorul care este conectat.
Pentru utilizatorul curent, acesta trebuia s ˘a ¸ stie ¸ si parola veche, dar pentru un
administrator aceast ˘a parol ˘a veche nu mai era necesar ˘a pentru a fi schimbat ˘a cu una nou ˘a.
Marea gre¸ seal ˘a de logic ˘a pe care o pot face programatorii este aceea de a folosi o func¸ tie
de administrator în func¸ tie de absen¸ ta sau prezen¸ ta unui câmp în cadrul unei pagini.
Astfel pentru atacator, era simplu s ˘a induc ˘a faptul c ˘a pe request trebuie s ˘a transmit ˘a un
câmp de parol ˘a null care s ˘a implice folosirea func¸ tiei de administrator.
Exemplu ar fi sub forma urm ˘atoare:
String parolaExistenta = request.getParameter("parolaExistenta");
boolean esteAdministator = false;
if(parolaExistenta == null){
esteAdministator = true;
}else{
esteAdministator = false;
}
¸ Stergerea unei piste de audit
În principal, pentru a de¸ tine un control asupra tuturor activit ˘a¸ tilor întreprinse de to¸ ti
cei care acceseaz ˘a aplica¸ tia, admnistratorul de¸ tine un jurnal de activit ˘a¸ ti între¸ tinute de to¸ ti
utilizatorii. Aplica¸ tia pe lâng ˘a, ad ˘augarea unei înregistr ˘ari în baza de date, îi confer ˘a

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 26
administratorului ¸ si ¸ stergerea de înregistr ˘ari din tabelul de jurnal, cu men¸ tiunea de a
contoriza în tabelul respectiv aceast ˘a ac¸ tiune.
O mare greseal ˘a, de aceast ˘a dat ˘a, este facut ˘a de designerii unei aplica¸ tii web care
consider ˘a ¸ si nu iau în calcul posibilitatea de a ¸ sterge tot jurnalul f ˘ar˘a a l˘asa urme. Aceast ˘a
modalitate de atac func¸ tioneaz ˘a astfel:
Un atacator se autentific ˘a cu un cont pentru a crea un cont de utilizator nou c ˘aruia îi
va atribui privilegiile necesare. Cu acest cont se va efectua opera¸ tiunea de atac iar ulterior,
dup˘a atac, acesta va folosi un alt cont nou cu care va ¸ sterge tot din trecut. La momentul
acesta, nu mai exist ˘a nicio informa¸ tie concludent ˘a despre opera¸ tiunile anterioare.
Pentru evitarea acestor erori logice programatorul trebuie s ˘a exerseze bune practici
care s ˘a îi asigure un grad mare de securitate ¸ si certitudine. Pentru a benefia de lini¸ stea
cuvenit ˘a trebuie ca programatorul s ˘a aib ˘a în vedere urm ˘atoarele aspecte: s ˘a lase
numeroase comentarii la fiecare por¸ tiune de cod scris ˘a care are func¸ tionalitate la baz ˘a, s˘a
cunoasc ˘a toate detaliile de design pe cât posibil de mult ¸ si s ˘a introduc ˘a în faza de testare
cât mai multe date eronate pentru verificare.
Cross-site Scripting (XSS)
Aceast ˘a tehnic ˘a de atac este folosit ˘a pentru a for¸ ta o pagin ˘a web s ˘a afi¸ seze un cod
mali¸ tios (scris de obicei în HTML sau Javascript) în cadrul unui browser apar¸ tinând unui
utilizator. ¸ Tinta, dup ˘a cele spuse anterior, se focuseaz ˘a pe utilizator, codul malware fiind
executat direct în browser.
Atacatorul va folosi site-ul doar pentru a ini¸ tia atacul, iar dup ˘a ce controlul îi va fi deplin
asupra browser-ului utilizatorului, acesta va putea folosi conturi bancare sau parole asociate
utilizatorului. Exist ˘a numeroase modalit ˘a¸ ti prin care acest malware scris în Javascript poate
deveni rezident pe o pagin ˘a web, dar printre cele mai cunoscute sunt:
înc˘arcarea malware-ului înten¸ tionat;
injectarea lui în sec¸ tiunea public ˘a a unui site;
injectarea codului printr-o vulnerabilitate la nivel de re¸ tea sau sistem de operare;
accesarea unui link în spatele c ˘aruia se afl ˘a un XSS
(http://www.siteWebVersiunea1.com/inregistrare.html?id=<SCRIPT>
alert(document.cookie)</SCRIPT>) .
Exist ˘a trei tipuri de atac:

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 27
1.Atacul de tip non-persistent : se bazeaz ˘a, ini¸ tial, pe g ˘asirea unei vulnerabilit ˘a¸ ti
XSS de c ˘atre atacator. Acest proces se bazeaz ˘a în principal pe g ˘asirea unui câmp
care implic ˘a c˘autarea deoarece dup ˘a cererea f ˘acut˘a, clientul a¸ steapt ˘a un r ˘aspuns.
R˘aspunsul sugestiv primit de la server poate apoi reprodus de c ˘atre atacator pentru a
satisface ob¸ tinerea de informa¸ tii în urma atacului. Acest caz a fost exemplificat în
momentul în care au fost enumerate modalit ˘a¸ tile de injectare XSS.
2. Atacul bazat pe DOM se realizeaz ˘a mai simplu decât atacul non-persistent deoarece
nu se mai a¸ steapt ˘a un mesaj de r ˘aspuns de la server. Exist ˘a pagini web în cadrul
aplica¸ tiei care filtreaz ˘a informa¸ tia în func¸ tie de un id unic sau altceva prin care este
recunoscut un utilizator. În exemplul urm ˘ator este eviden¸ tiat mecanismul care nu
trimite cod malware la serverul web ci îi spune browser-ului în ce punct al
documentelui curent s ˘a sar ˘a:
Din: http://site/object?id=1&titlu=Ultima+sansa!
În: http://site/object?id=1&titlu=Foo#<script>alert(XSS\
%20Testare)</script>
3.Atacul de tip persistent : este, conform statisticilor oficiale, cel mai periculos atac
deoarece, odat ˘a cu accesarea unei pagini frecvent vizitat ˘a, execu¸ tia codului malware
se face automat deoarece acesta o s ˘a fie injectat în link.
Un programator trebuie s ˘a aibe în vedere faptul c ˘a în cazul în care se utilizeaz ˘a codarea
datelor de intrare ¸ si de ie¸ sire exist ˘a vulnerabilit ˘a¸ ti mari la baz ˘a. În primul rând, în momentul
în care se utilizeaz ˘a codarea datelor de intrare atunci un atac XSS persistent este imposibil
de oprit iar în cel ˘alalt caz, codarea datelor de ie¸ sire favorizeaz ˘a atacul de tip injec¸ tie cu cod
SQL.
Normele de precau¸ tie, pentru a evita evenimentele nepl ˘acute se rezum ˘a la:
1. alegerea un browser cât mai sigur ¸ si cât mai securizat;
2. accesarea link-urilor care par cunoscute utilizatorului;
3. folosirea unei ma¸ sini virtuale;
4. evitarea re¸ tinerii creden¸ tialelor de acces pentru autentificare pe diferite platforme.
Cross-site Request Forgery (CSRF)

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 28
Cross-site Request Forgery (CSRF sau XSRF) este o form ˘a de atac mai pu¸ tin cunoscut ˘a
care îns ˘a poate provoca pagube foarte mari care stau la baza tranzac¸ tilor produse nevoit de
utilizatori. Un utilizator este obligat, practic, s ˘a fac ˘a tranzac¸ tii în numele unui utilizator.
Cea mai bun ˘a metod ˘a de a stopa acest tip de atac este folosirea unui token de fiecare dat ˘a
când se acceseaz ˘a un cookie.
Acest tip de vulnerabilitate este cauzat ˘a în mare parte dezvoltatorilor care omit s ˘a
aplicate m ˘asuri de prevenire ca urmare a unui atac de acest tip.
În spatele unei pagini corespunz ˘atoare unei b ˘anci anume, un atacator poate insera un
cod mali¸ tios sub form ˘a de javascript care se execut ˘a pentru to¸ ti utilizatorii conecta¸ ti.
Practic, utilizatorul accesând pagina b ˘ancii, acceseaz ˘a automat ¸ si acest script aflat în spate
care cere f ˘ar˘a voia utilizatorului o sum ˘a de bani.
Acest mecanism de sustragere este în¸ teles de banca ca fiind o solicitare venit ˘a din partea
utilizatorului ¸ si astfel îi va oferi tot suportul, dar în spate un cod mali¸ tios face un GET pentru
a prelua cele necesare.
Un mecanism care impiedic ˘a aceast ˘a metod ˘a de sustragere este folosirea unui token la
nivelul cookie. Un atacator poate sustrage un cookie dar nu poate verifica autenticitarea
codificat ˘a din spate. Astfel, c ˘and se va ac¸ tiona metoda GET, se va verifica dac ˘a valoarea
cookie-ului din formular coincide cu cea din antetul HTTP al cererii, iar în caz contrar
conexiunea este refuzat ˘a.
Un alt factor foarte important care impiedic ˘a acest mecanism este cererea creden¸ tialelor
de logare de fiecare dat ˘a. În acest fel utilizatorul când va face un POST, prima dat ˘a îi se vor
verificare datele de autentificare, ¸ si eventual dac ˘a nu este logat cu vreun utilizator îi se vor
cere pân ˘a când acestea vor fi corecte.
1.1.7 Securitatea în ciclul de dezvoltare al unui produs software
Software Development LifeCycle (SDLC) sau ciclul de via¸ t ˘a parcurs de-a lungul
dezvolt ˘arii unui software con¸ tine to¸ ti pa¸ sii pe care trebuie s ˘a îi parcurg ˘a un programator
pentru a ob¸ tine un produs final foarte stabil din punct de vedere tehnologic sau din punct
de vedere al securit ˘a¸ tii. Vulnerabilit ˘a¸ tile sunt din ce în ce mai multe deoarece
complexitatea aplica¸ tiilor este în cre¸ stere.
Este foarte important s ˘a nu existe porturi deschise la nivel de sistem ¸ si sistemul s ˘a fie la
zi cu actualiz ˘arile pentru a nu avea probleme ¸ si a fi victima unor atacuri cibernetice.
Pentru a evita eventualele nepl ˘aceri, trebuie ca proiectan¸ tii unui sistem software s ˘a

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 29
parcurg ˘a un amplu proces care implic ˘a mult ˘a munc ˘a pe partea de securitate ¸ si nu numai.
To¸ ti pa¸ si trebuie parcur¸ si pentru a nu avea nepl ˘aceri la final, în momentul în care produsul
este activ pe browser web.
Aceste calcule trebuie f ˘acute înc ˘a de la început pentru a avea un cost cât mai mic. Nu
trebuie s ˘a existe impedimente care s ˘a perturbe luarea decizie de a urma to¸ ti pa¸ sii. Pe lâng ˘a
costurile care implic ˘a acest fenomen, performan¸ ta pentru sistemele concepute de la început
stabil din punct de vedere al securit ˘a¸ tii, este sporit ˘a.11
Figura 1.6: COSTURI SDLC
Dup˘a cum se observ ˘a în figura 1.6, exist ˘a ¸ sa¸ se pa¸ si care trebuie urma¸ ti pentru
ob¸ tinerea produsului final. Fiecare pas, respectiv: cerin¸ te, design, dezvoltare, testare, UAT
¸ si produc¸ tie trebuie s ˘a aib ˘a la baz ˘a ¸ si norme de securitate neap ˘arat, înc ˘a de la început.
Conceptele esen¸ tiale care implic ˘a confiden¸ tialitate, integritate sau disponibilitate sunt
foarte importante în structura profilului de securitate al software-ului. Trebuie respectate
în întregime pentru a nu exista unele nepl ˘aceri. Pe lâng ˘a conceptele esen¸ tiale, foarte
importante, mai pot exista ¸ si câteva concepte generale cum ar fi autentificarea, autorizarea,
jurnalizarea sau managementul sesiunilor sau concepte de design cum ar fi separarea
drepturilor, securitate pe nivele sau leg ˘aturi între componentele existente care trebuie s ˘a
fie luate în vedere la proiec¸ tie.
Din experien¸ ta proprie, toate aceste concepte sunt abordate în totalitate în dezvoltarea
software, iar odat ˘a cu punerea în produc¸ tie a produsului final, feedback-ul a fost mereu
11Ghid securizare aplica¸ tii web, https://cert.ro/

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 30
pozitiv.
Managementul riscurilor este un factor cheie în ceea ce prive¸ ste managementul
securit ˘a¸ tii software deoarece const ˘a în evalu ˘ari preliminare asupra necesit ˘a¸ tii controalelor
de securitate care într-un final duce c ˘atre ob¸ tinerea unui nivel acceptabil de risc.
Cerin¸ tele sunt foarte importante deoarece f ˘ar˘a o analiz ˘a ampl ˘a ¸ si riguroas ˘a nu se ob¸ tin
rezultate. Absen¸ ta un cerin¸ te clare duce la e¸ sec deoarece se va proiecta un software slab din
punct de vedere calitativ. Pe a evita aceste cazuri nefericite unde costurile vor fi foarte mari
trebuie ca urm ˘atoarele cerin¸ tele de securitate s ˘a fie respectate: politici, norme, cerin¸ te de
conformitate sau standarde interna¸ tionale. La nivel de design, pe lâng ˘a conceptele de baz ˘a
care trebuie respectate, trebuie evaluate ¸ si posibilit ˘a¸ tiile atacurilor cu tent ˘a de indentificare
a controalelor sau prioritizare în func¸ tie de riscuri.12
1.1.8 Avantaje ¸ si dezavantaje
Platforma Java împreun ˘a cu platforma .NET acumuleaz ˘a o serie de tehnologii de care
utilizatorii sunt foarte mul¸ tumi¸ ti deoarece le u¸ sureaz ˘a într-o oarecare m ˘asur˘a munca.
Datorit ˘a acestui fapt, o compara¸ tie dintre cele dou ˘a raportându-ne la tehnologii este greu
de exprimat deoarece fiecare dintre cele dou ˘a limbaje au atuuri.
Marele avantaj pe care îl are limbajul de programare Java este ma¸ sina virtual ˘a Java.
Aceast ˘a ma¸ sin ˘a virtual ˘a îi confer ˘a limbajului flexibilitatea ¸ si conectivitate. În acest sens,
Java poate fi folosit ˘a, în mare parte, pe toate sistemele de operare existente, la momentul
actual, incluzând aici ¸ si OSX sau Linux care devine din ce în ce mai folosit datorit ˘a
siguran¸ tei oferite în raport cu Windows. Dar, atâta vreme cât liderul pie¸ tei este Microsoft,
limbajul de programare cunoscut C# o s ˘a se dezvolte în continuare apelând la puterea C ¸ si
structura biblioteciilor Java.
Un alt avantaj pe care îl are Java la momentul actual este sus¸ tinerea care vine atât
din partea companiilor mari cum ar fi IBM cât ¸ si din partea programatoriilor care iubesc
acest limbaj. Programatorii .NET ar putea s ˘a fie mult mai bine v ˘azu¸ ti în momentul în care
platforma .NET ar fi independent ˘a ¸ si mai mult de Microsoft.
Performan¸ tele celor dou ˘a platforme sunt îns ˘a destul de mici în compara¸ tie cu rezultatele
ob¸ tinute de compilatoarele C=C+ +. În acest sens, cele dou ˘a platforme ar trebui s ˘a se
gândeasc ˘a ¸ si s ˘a pun ˘a accent mai mult pe interpretarea codului scris.
12Securitatea în ciclul de dezvoltare al unui produs software, https://cert.ro/

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 31
Abordarea în ceea ce privesc serviciile web este diferit ˘a pentru cele dou ˘a platforme
datorit ˘a faptului c ˘a cele dou ˘a folosesc performan¸ te diferite în scrierea codului. Platforma
Java EE are la baz ˘a doar limbajul de programare Java iar .NET are mai multe limbaje de
programare ceea ce îi confer ˘a un avantaj minor. Serviciile web pentru .NET sunt bazate,
odat˘a cu utilizarea multitudinii de limbaje, pe componentizare sau pe servicii
XML /SOAP.WSDL. Java propune îns ˘a o abordare de rescriere a codului în Java dar cu
op¸ tiunea de scriere a acestuia pe diferite sisteme de operare, deci la baz ˘a Java exceleaz ˘a
prin utilizarea multithreading-ului. Conectivitatea dintre mai multe aplica¸ tii în Java,
rezolvat ˘a prin servicii web, este realizat ˘a, dup ˘a cum am precizat ¸ si într-un capitol dedicat
serviciilor web, cu ajutorul unei ma¸ sini virtuale Java care consum ˘a, într-adev ˘ar, destul de
multe resurse deoarece se ini¸ tializeaz ˘a JVM pentru fiecare aplica¸ tie.
În ceea ce privesc bazele de date, plaforma Java ofer ˘a mai multe posibilit ˘a¸ ti de utilizare
cum ar fi Oracle sau IBM DB2, spre deosebire de .NET care permite doar SQL Server de
la Microsoft.
Un alt subiect interesant este conturat în preajma compara¸ tiei dintre limbajul de
programare Java ¸ si PHP. De multe ori, programatorul, accumulând tot mai multe
informa¸ tii, se întreab ˘a care ar fi dezavantajele sau avantajele care stau la baza celor dou ˘a
limbaje ¸ si de ce nu ar folosi un limbaj mai versatil ca ¸ si PHP.
Dezavantajele PHP-ului sunt îns ˘a numeroase în raport cu Java, deoarece programatorul
trebuie s ˘a foloseasc ˘a ¸ si s ˘a deployeze pe un singur server web ¸ si con¸ tinutul dinamic trebuie
s˘a fie scris prin interog ˘ari SQL explicite care comunic ˘a cu un singur serviciu de baze de
date. Prin toate aceste mecanisme, PHP amestec ˘a foarte mult partea de prezentare ¸ si logic ˘a
a aplica¸ tiei.
Ambele limbaje de programare, îns ˘a, sunt în continu ˘a dezvoltare datorit ˘a num ˘arului de
programatori care îl folosesc ¸ si îl exploateaz ˘a zilnic iar toate dezavantajele PHP ar putea
¸ si eliminate odat ˘a cu trecerea timpului. În ciuda faptului c ˘a PHP are câteva dezavantaje
considerabile, exceleaz ˘a prin documenta¸ tie ¸ si scripturi foarte bune ¸ si la îndemâna oricui
din domeniu IT.
Ultima compara¸ tie o s ˘a o înclin între dou ˘a platforme robuste care folosesc aceea¸ si
limbaj de programare Java, ¸ si anume, Java EE ¸ si Java SE. În ceea e privesc API-urile pe
care le folosesc cele dou ˘a platforme, în cadrul aplica¸ tiilor, API-urile definite de Java SE
pot fi folosite ¸ si de programatorii de enterprise ¸ si asta confer ˘a un avantaj mare pentru Java
EE. Java SE con¸ tine libr ˘arii ¸ si API-uri de care orice programator Java ¸ stie: java.util,
java.io ¸ si a¸ sa mai departe.
Platforma Java (Enterprise Edition) difer ˘a de platforma Java Standard Edition (Java

CAPITOLUL 1. NO¸ TIUNI INTRODUCTIVE 32
SE) prin faptul c ˘a adaug ˘a biblioteci care furnizeaz ˘a func¸ tionalit ˘a¸ ti pentru implementarea
software-ului Java de tip Java multi-tier, tolerant la erori, bazat în mare m ˘asur˘a pe
componente modulare care ruleaz ˘a pe un server de aplica¸ tii .
Cu alte cuvinte, dac ˘a aplica¸ tia cere la o scar ˘a foarte mare un sistem distribuit, atunci
ar trebui s ˘a lua¸ ti în considerare utilizarea Java EE. Construit pe partea superioar ˘a a Java
SE, acesta ofer ˘a biblioteci pentru acces la baze de date (JDBC, JPA), invocare de metode
la distan¸ t ˘a (RMI), mesagerie (JMS), servicii web, procesare XML ¸ si define¸ ste API-urile
standard pentru Enterprise JavaBeans, servlet, portlet ¸ si Java Pagini server.
Java EE ofer ˘a o func¸ tionalitate bazat ˘a pe componente Java SE ¸ si pe Java Development
Kit (JDK) unde se afl ˘a JVM ¸ si alte componente ajut ˘atoare la dezvoltare. Se poate
concluziona c ˘a Java SE este înglobat ˘a în Java EE deoarece o mul¸ time din funci¸ tionalit ˘a¸ ti
(cum ar fi JVM) sunt preluate de Java EE.
Platforma Java Enterprise Edition difer ˘a de platforma Java Standard Edition ¸ si prin
faptul c ˘a adaug ˘a biblioteci care furnizeaz ˘a func¸ tionalit ˘a¸ ti pentru implementarea software-
ului Java de tip Java multi-tier, tolerant la erori, bazat în mare m ˘asur˘a pe componente
modulare care ruleaz ˘a pe un server de aplica¸ tii .
În momentul în care programatorul finalizeaz ˘a aplica¸ tia propriu-zis ˘a, tot codul scris
va fi transpus în bytecode ¸ si împachetat într-un EAR care va fi deployat pe un server de
aplica¸ tii.
Acest proces ar putea fi realizat pur ¸ si simplu folosind doar un editor de text ¸ si
compilatorul Java care vine standard cu o instalare a JDK. Cu toate acestea, exist ˘a un
ecosistem bogat de instrumente integrate de dezvoltare a mediului (IDE) care ajut ˘a la
dezvoltarea rapid ˘a a aplica¸ tiilor codului Java EE.
În ceea ce privesc IDE-urile, Eclipse ¸ si NetBeans sunt dou ˘a dintre cele mai populare
pentru dezvoltarea Java EE. Ambele ofer ˘a formatul codului surs ˘a, verificarea sintaxei ¸ si
organizarea proiectului ¸ si au, de asemenea, o comunitate bogat ˘a de plugin-uri, permi¸ tând
utilizatorilor s ˘a creeze componente care vor ad ˘auga func¸ tionalit ˘a¸ ti suplimentare IDE-ului.
Plugin-urile sunt de obicei necesare pentru a construi, a implementa ¸ si a efectua o
integrare continu ˘a în aplica¸ tiile Java EE. În acest sens, plugin-urile pentru proiectele de
dezvoltare precum Maven, instrumente de implementare precum Gradle ¸ si tehnologii de
integrare continu ˘a, cum ar fi Jenkins ¸ si Hudson, sunt populare.

Capitolul 2
MANAGEMENTUL DE DOCUMENTE
Gestiunea documentelor, denumit ˘a adesea Document Management Systems (DMS) ,
are la baz ˘a utilizarea unui sistem software pentru stocarea, gestionarea ¸ si urm ˘arirea
documentelor electronice ¸ si a imaginilor electronice transpuse cu ajutorul mecanismului
de scanare din suport hârtie în suport electronic.
În acest sens, rezumând defini¸ tia anterioar ˘a, DMS are la baz ˘a toate documentele care
sunt vehiculate în cadrul unei firme. Acesta include captura de documente ¸ si de con¸ tinut,
fluxul de lucru, depozit de documente, COLD /ERM, sisteme de ie¸ sire ¸ si sisteme de
recuperare a informa¸ tiilor ¸ si procesele utilizate pentru urm ˘arirea, stocarea ¸ si controlul
documentelor. Acest mecanism mai ofer ˘a unele dintre cele mai de baz ˘a func¸ tionalit ˘a¸ ti
pentru gestionarea con¸ tinutului, impunând controale ¸ si capabilit ˘a¸ ti de management pe alte
documente.
Documentele pe suport hârtie au fost utilizate mult timp în stocarea informa¸ tiilor.
Hârtia este costisitoare, predispus ˘a la pericole ¸ si este risipitoare. Software-ul de gestionare
a documentelor nu este doar o unealt ˘a, ci permite unui utilizator s ˘a gestioneze accesul, s ˘a
urm˘areasc ˘a ¸ si s ˘a editeze informa¸ tiile stocate.
Gestionarea documentelor este foarte necesar ˘a, în momentul de fa¸ t ˘a deoarece
majoritatea companiilor lucreaz ˘a cu un volum de date foarte mare. Odat ˘a cu apari¸ tia
numeroaselor tehnologii , la nivel de Web, acest sistem trebuie s ˘a fie adaptat nevoilor
actuale. Astfel, în ceea ce prive¸ ste flexibilitatea ¸ si conectivitatea, sistemul de management
poate fi vizibil pe orice device conectat la internet, fiind adaptat conform rezolu¸ tiei
device-ului.
Sistemele de gestiune a documentelor variaz ˘a de la m ˘arimea ¸ si domeniul de aplicare în
func¸ tie de sistemele mici, independente la configura¸ tii la scar ˘a larg ˘a la nivel de
întreprindere, care servesc unui public global. Multe sisteme de gestionare a documentelor
33

CAPITOLUL 2. MANAGEMENTUL DE DOCUMENTE 34
ofer˘a un mijloc de a încorpora în mod electronic practicile standard de depunere a
documentelor fizice.
Gestiunea documentelor, în timp ce este recunoscut ˘a ¸ si utilizat ˘a în mod independent,
este, de asemenea, o component ˘a obi¸ snuit ˘a g˘asit˘a într-un mediu de gestionare a con¸ tinutului
Enterprise. Aceste sisteme au permis unei organiza¸ tii s ˘a capteze faxuri ¸ si formulare, s ˘a
salveze copii ale documentelor ca imagini ¸ si s ˘a stocheze fi¸ sierele imagine în depozit pentru
securitate ¸ si recuperare rapid ˘a (recuperarea a fost posibil ˘a deoarece sistemul a gestionat
extragerea textului din document prin procesul de captare, iar func¸ tia de indexare a textului
a oferit capabilit ˘a¸ ti de recuperare a textului).
În timp ce multe sisteme EDM stocheaz ˘a documente în formatul lor de fi¸ sier nativ
(Microsoft Word sau Excel, PDF), unele sisteme de management al documentelor bazate
pe web încep s ˘a stocheze con¸ tinut sub form ˘a de html. Aceste sisteme de gestionare a
politicilor impun importarea con¸ tinutului în sistem. Cu toate acestea, odat ˘a ce con¸ tinutul
este importat, software-ul se comport ˘a ca un motor de c ˘autare, astfel încât utilizatorii s ˘a
poat˘a g˘asi ceea ce caut ˘a mai repede. Formatul html permite o mai bun ˘a aplicare a
capabilit ˘a¸ tilor de c ˘autare, cum ar fi c ˘autarea ¸ si stoparea complet ˘a a textului.
2.1 Alfresco
Alfresco este o solu¸ tie de gestionare a con¸ tinutului enterprise conceput ˘a pentru a spori
productivitatea ¸ si fluxul de lucru al companiei. Aceast ˘a solu¸ tie enterprise CMS ofer ˘a o
varietate de caracteristici ¸ si instrumente care ajut ˘a la g ˘asirea ¸ si accesarea mai u¸ soar ˘a a
documentelor, la editarea fi¸ sierelor ¸ si la distribuirea de date. Este o solu¸ tie mobil ˘a ¸ si ofer ˘a
securitate puternic ˘a pentru a p ˘astra în siguran¸ t ˘a toate datele importante ale companiei.
Una dintre caracteristicile disponibile pentru acest sistem digital de management al
documentelor este fluxul de lucru ¸ si op¸ tiunile de colaborare pe care le include. Aceast ˘a
solu¸ tie v ˘a permite s ˘a partaja¸ ti cu u¸ surin¸ t ˘a fi¸ sierele cu anumi¸ ti utilizatori pe care îi organiza¸ ti
în func¸ tie de roluri. Se pot transmite documente c ˘atre anumite persoane pentru aprobare sau
revizuire. În plus, pute¸ ti comunica prin module destinate special acestui tip, prin accesarea
sec¸ tiuniilor predestinate pentru lucrul în echip ˘a.
În plus, acest software de gestionare a con¸ tinutului enterprise este accesibil pe
dispozitivele mobile. Pute¸ ti s ˘a vizualiza¸ ti con¸ tinut pe aceste dispozitive ¸ si chiar s ˘a
efectua¸ ti modific ˘ari. Controalele de acces ¸ si criptarea dispozitivelor sunt disponibile

CAPITOLUL 2. MANAGEMENTUL DE DOCUMENTE 35
pentru a asigura securitatea documentelor ¸ si a informa¸ tiilor.
Alfresco ofer ˘a toate func¸ tiile necesare pentru g ˘asirea, editarea ¸ si stocarea
documentelor. Pute¸ ti deschide documentele existente ¸ si le pute¸ ti edita. Versiunile de
control sunt disponibile, permi¸ tându-v ˘a s˘a accesa¸ ti ¸ si s ˘a vizualiza¸ ti cele mai recente sau
versiuni anterioare ale unui document. Exist ˘a, de asemenea, capabilit ˘a¸ ti de imagistic ˘a a
documentelor ¸ si op¸ tiunea de a stoca fi¸ sierele ¸ si documentele în cloudul Alfresco.
Securitatea con¸ tinutului este important ˘a, cu ajutorul CMS, pentru întreprindere. Pute¸ ti
vizualiza toat ˘a activitatea anterioar ˘a a unui fi¸ sier ¸ si pute¸ ti vedea cine a accesat documentele.
Se pot seta restric¸ tii, astfel încât numai anumite persoane s ˘a poat ˘a vizualiza, edita ¸ si ¸ sterge
un document. Acest lucru împiedic ˘a accesul datelor confiden¸ tiale de la persoanele nedorite.
Exist ˘a monitorizarea ¸ si auditarea documentelor ¸ si criptarea con¸ tinutului, pentru a se asigura
c˘a nimic nu este accesat f ˘ar˘a permisiunea necesar ˘a.
Componenta principal ˘a a solu¸ tiei informatice Alfresco este implementat ˘a în aplica¸ tia
web alfresco.war. Acesta furnizeaz ˘a o component ˘a de depozitare în care este stocat
con¸ tinutul, plus toate serviciile de con¸ tinut asociate. Alfresco Share ofer ˘a o interfa¸ t ˘a client
web (care este o interfa¸ t ˘a de utilizator, UI) implementat ˘a ca aplica¸ tie web în loca¸ tia
share.war. Partajarea faciliteaz ˘a gestionarea de c ˘atre utilizatori a site-urilor, a
documentelor, a utilizatorilor ¸ si a¸ sa mai departe. Func¸ tia de c ˘autare este implementat ˘a în
partea superioar ˘a a aplica¸ tiei ¸ si ofer ˘a indexarea întregului con¸ tinut, ceea ce permite o
func¸ tionalitate puternic ˘a de c ˘autare. Pe lâng ˘a clien¸ tii web care acceseaz ˘a Repository cu
ajutorul facilit ˘a¸ tii Share, exist ˘a ¸ si clien¸ ti care vor accesa con¸ tinutul prin API-urile REST
furnizate de platform ˘a pentru mobile.
În asamblu, Alfresco în cadrul alfresco.war, suport ˘a ¸ si un flux de lucru, încorporat,
bazat pe activit ˘a¸ ti. Platforma este, de obicei, integrat ˘a cu un server LDAP pentru a putea
sincroniza utilizatorii ¸ si grupurile cu serviciile de con¸ tinut Alfresco. Majoritatea instal ˘arilor
se integreaz ˘a, de asemenea, cu un server SMTP, astfel încât platforma poate trimite e-
mailuri, cum ar fi invita¸ tiile la site, a¸ sa cum sunt trimise în cadrul aplica¸ tiei concepute.
Pe lâng ˘a share, exist ˘a ¸ si al¸ ti clien¸ ti care se pot conecta la componenta repository,
inclusiv orice client compatibil CMIS, ¸ si prin intermediul protocolului Microsoft
SharePoint orice client SharePoint.
Componenta repository din cadrul Alfresco este sus¸ tinut ˘a de un server care persist ˘a
con¸ tinuturi, metadate, asocia¸ tii ¸ si indici de text complet. Interfe¸ tele de programare accept ˘a
mai multe limbi ¸ si protocoale pe care dezvoltatorii pot crea aplica¸ tii ¸ si solu¸ tii
personalizate. Aplica¸ tiile out-of-the-box ofer ˘a solu¸ tii standard, cum ar fi gestionarea
documentelor ¸ si gestionarea înregistr ˘arilor.

CAPITOLUL 2. MANAGEMENTUL DE DOCUMENTE 36
Ca aplica¸ tie Java, acesta ruleaz ˘a pe orice sistem care poate rula Java Enterprise
Edition. La baz ˘a este o platforma enterprise care ofer ˘a posibilitatea de a modula
func¸ tionalitatea, cum ar fi versiunea, securitatea ¸ si regulile. Serviciile de con¸ tinut Alfresco
utilizeaz ˘a scripting pentru a simplifica ad ˘augarea de noi func¸ tionalit ˘a¸ ti ¸ si pentru a dezvolta
noi interfe¸ te de programare.
Solu¸ tiile sunt în mod obi¸ snuit împ ˘ar¸ tite între clien¸ ti ¸ si server, în care clien¸ tii ofer ˘a
utilizatorilor o interfa¸ t ˘a cu utilizatorul pentru solu¸ tia respectiv ˘a, iar serverul ofer ˘a servicii
de gestionare a con¸ tinutului ¸ si spa¸ tiu de stocare. Solu¸ tiile ofer ˘a de obicei mai mul¸ ti clien¸ ti
pe un server partajat, în care fiecare client este adaptat pentru mediul în care este utilizat.
Serviciile de con¸ tinut Alfresco ofer ˘a un client bazat pe web numit Alfresco Share,
construit în întregime cu tehnologia script-ului Web. Partajarea ofer ˘a capabilit ˘a¸ ti de
gestionare a con¸ tinutului cu interfe¸ te simple de utilizator, instrumente de c ˘autare ¸ si
r˘asfoire a componentei repository, con¸ tinut precum miniaturi ¸ si metadate asociate,
previzualiz ˘ari ¸ si un set de instrumente de colaborare, cum ar fi wiki ¸ si discu¸ tii. Partajarea
este organizat ˘a ca un set de site-uri care pot fi folosite ca loc de întâlnire pentru
colaborare. Este o aplica¸ tie bazat ˘a pe web, care poate fi rulat ˘a pe un server diferit de
serverul care ruleaz ˘a repository.
De asemenea, exist ˘a clien¸ ti pentru portaluri, platforme mobile, Microsoft O ce ¸ si
desktop. În plus, utilizând mecanismul de documente a sistemului de operare, utilizatorii
pot partaja documente printr-o unitate de re¸ tea. Folosind tehnologia JLAN, Alfresco poate
s˘a arate ¸ si s ˘a se comporte ca o component ˘a angrenat ˘a cu documente. JLAN este singura
implementare a protocolului CIFS de c ˘atre serverul Java, permi¸ tând utilizatorilor s ˘a
interac¸ tioneze cu serviciile de con¸ tinut Alfresco iar con¸ tinutul s ˘a fie stocat ¸ si gestionat în
serverul de aplica¸ tii de con¸ tinut.
Clien¸ tii comunic ˘a cu serverul de aplica¸ tii prin numeroase protocoale suportate. HTTP
¸ si SOAP ofer ˘a acces programatic, în timp ce protocoalele CIFS, FTP, WebDA V , IMAP ¸ si
Microsoft SharePoint ofer ˘a acces la aplica¸ tii.
Serviciile de con¸ tinut Alfresco ofer ˘a capabilit ˘a¸ ti ECM ca servicii de date, interfe¸ te
utilizator ¸ si aplica¸ tii pentru utilizatori. Capabilit ˘a¸ tile interfe¸ tei cu utilizatorul sunt
furnizate de aplica¸ tii ¸ si componente ale aplica¸ tiei, utilizând platforma Alfresco Content
Services implementat ˘a ca o modalitate mai rapid ˘a de a dezvolta aplica¸ tii de con¸ tinut
folosind scripting ¸ si arhitectura REST.
Infrastructura de script-uri web g ˘azduie¸ ste Java beans la fel de u¸ sor ca JavaScript.
Scripturile web adaug ˘a pu¸ tin cheltuieli generale, dar ofer ˘a o mare flexibilitate ¸ si
productivitate în dezvoltare. Scripturile Web din layer-ul web v ˘a permit s ˘a construi¸ ti rapid

CAPITOLUL 2. MANAGEMENTUL DE DOCUMENTE 37
componente de interfa¸ t ˘a cu Surf sau simple HTML ¸ si s ˘a le implementa¸ ti ca componente
de partajare Alfresco, portleturi sau alte platforme web, cum ar fi Gadget-uri Google.
Fluxurile binare reale ale con¸ tinutului sunt stocate în fi¸ siere gestionate în baza de
documente, de¸ si aceste fi¸ siere sunt doar pentru uz intern ¸ si nu reflect ˘a ceea ce a¸ ti putea
vedea prin interfe¸ tele partajate ale unit ˘a¸ tilor. Repository de¸ tine, de asemenea, asocierile
între articolele de con¸ tinut, clasific ˘arile ¸ si structura folderului /fi¸ sierului. Structura
dosarului /fi¸ sierului este men¸ tinut ˘a în baza de date ¸ si nu este reflectat ˘a în structura intern ˘a
de stocare a fi¸ sierelor.
Cel mai simplu model pentru non-programatori este utilizarea componentelor out-of-
the-box a aplica¸ tiei Share Alfresco ¸ si a modelului Rules and Actions, un set de condi¸ tii
¸ si ac¸ tiuni pentru preluarea con¸ tinutului în func¸ tie de aceste condi¸ tii. Pute¸ ti defini reguli ¸ si
ac¸ tiuni utilizând un expert ¸ si pute¸ ti efectua ac¸ tiuni, cum ar fi conversia con¸ tinutului, mutarea
con¸ tinutului sau executarea unui fragment JavaScript simplu.
Scripturile Web v ˘a permit s ˘a efectua¸ ti proces ˘ari mai sofisticate f ˘ar˘a program ˘ari
complexe. Implementarea serviciilor de interoperabilitate pentru gestionarea con¸ tinutului
(CMIS) a fost construit ˘a folosind scripturi web. Prin utilizarea JavaScript pentru a construi
aceste servicii de date, este u¸ sor s ˘a crea¸ ti noi servicii. Pentru a construi noi interfe¸ te de
utilizator sau extensii în Share, pute¸ ti utiliza, de asemenea, scripturi web utilizând un
limbaj de template-uri web, cum ar fi FreeMarker. Majoritatea ac¸ tiunilor au fost construite
folosind scripturi web.
CMIS ofer ˘a un set standard de servicii comune pentru lucrul cu baza de documente
dar acesta nu dicteaz ˘a modul în care func¸ tioneaz ˘a un depozit ¸ si nu încearc ˘a s˘a integreze
fiecare caracteristic ˘a a fiec ˘arui depozit. Serviciile de con¸ tinut Alfresco ofer ˘a o
implementare a serviciului Web CMIS ¸ si leg ˘aturilor RESTful, precum ¸ si un API client
CMIS pentru utilizarea în medii Surf ¸ si în alte medii.
API-ul REST ofer ˘a acces la func¸ tionalitatea bazei de documente principale, utilizând o
abordare RESTful. Acest lucru este util în cazul în care dezvoltatorul nu dore¸ ste sau nu are
nevoie s ˘a scrie scripturi web personalizate ¸ si dezvolt ˘a o aplica¸ tie de tip client. Acest API
poate fi considerat o colec¸ tie gata de script-uri web care poate fi apelat ˘a de la orice client
capabil s ˘a fac ˘a cereri REST ¸ si s ˘a primeasc ˘a r˘aspunsurile asociate.
O interfa¸ t ˘a service este definit ˘a ca o interfa¸ t ˘a Java. Pentru serviciile care formeaz ˘a
API-ul intern încorporat pentru extensii, preocup ˘arile transversale, cum ar fi delimitarea
tranzac¸ tiilor, controlul accesului, auditul, înregistrarea ¸ si acordarea de contracte multiple,
sunt conectate prin intermediul AOP din Spring. Aceasta înseamn ˘a, de asemenea, c ˘a
preocup ˘arile transversale pot fi configurate independent sau chiar dezactivate pe server

CAPITOLUL 2. MANAGEMENTUL DE DOCUMENTE 38
dac˘a, de exemplu, performan¸ ta este cea mai mare cerin¸ t ˘a ¸ si nu este necesar ˘a func¸ tia.
Serviciile multiple sunt agregate într-un subsistem al serviciilor de con¸ tinut Alfresco,
unde un subsistem reprezint ˘a o capacitate coerent ˘a complet ˘a a serverului de servicii al
con¸ tinutului Alfresco, precum autentificarea, transformarea ¸ si protocoalele. Ca unitate,
subsistemele au propriul lor ciclu de via¸ t ˘a unde pot fi închise ¸ si repornite în timpul
func¸ tion ˘arii serverului. Acest lucru este util pentru dezactivarea aspectelor serverului sau
reconfigurarea unor p ˘ar¸ ti ale acestuia, cum ar fi maparea sincroniz ˘arii LDAP. Fiecare
subsistem accept ˘a interfa¸ ta proprie de administrare accesibil ˘a prin intermediul fi¸ sierelor
cu propriet ˘a¸ ti sau JMX.
Protocoalele ofer ˘a dezvoltatorilor o alt ˘a posibilitate de a construi propriile aplica¸ tii ¸ si
extensii. Dac ˘a construi¸ ti un client pentru a v ˘a conecta prin intermediul protocolului
SharePoint, utiliza¸ ti serviciul Alfresco O ce Services (AOS). Protocoalele ofer ˘a o resurs ˘a
pentru dezvoltatori, pe lâng ˘a numeroasele puncte extinse ¸ si API-urile construite în
Alfresco.
Pluginul Alfresco Maven are o mul¸ time de op¸ tiuni de configurare pentru a acoperi
multe cazuri de utilizare diferite. De asemenea, este u¸ sor s ˘a controla¸ ti exact ce aplica¸ tii
web ar trebui s ˘a fie difuzate, de exemplu, alfresco-platform-jar-archetype vine cu
plugin-ul configurat pentru a utiliza baza de date H2 ¸ si pentru a porni Platforma Alfresco,
Solr 4 ¸ si Alfresco REST API Explorer.
Pe lâng ˘a asta, pluginul Alfresco Maven se ocup ˘a de testele de integrare care sunt
executate în contextul complet al aplica¸ tiei, inclusiv Solr. Executarea testului de integrare
mvn detecteaz ˘a dac ˘a o platform ˘a Alfresco se execut ˘a deja ¸ si ofer ˘a dezvoltatorilor
feedback instantaneu cu privire la testele lor. În cazul în care o platform ˘a Alfresco nu este
în curs de func¸ tionare, vor începe s ˘a se execute testele.
2.2 Tomcat
Tomcat este un server de aplica¸ tii de la Apache Software Foundation care execut ˘a
servlets Java ¸ si red ˘a pagini Web care includ codarea paginii Java Server.
La baz ˘a, Tomcat este compus dintr-un num ˘ar de componente, incluzând un motor
Tomcat JSP ¸ si o varietate de conectori diferi¸ ti, dar componenta sa principal ˘a este numit ˘a
Catalina. Catalina ofer ˘a implementarea actual ˘a de c ˘atre Tomcat a specifica¸ tiei servletului.
Atunci când porni¸ ti serverul Tomcat, de fapt începe¸ ti Catalina.
Catalina este containerul de servlet al lui Tomcat. Catalina implementeaz ˘a specifica¸ tiile

CAPITOLUL 2. MANAGEMENTUL DE DOCUMENTE 39
Sun Microsystems pentru servlet ¸ si Pagini JavaServer (JSP). În Tomcat, un element Realm
reprezint ˘a o baz ˘a de date cu nume de utilizator, parole ¸ si roluri (similare grupurilor Unix)
atribuite acelor utilizatori. Implement ˘arile diferite ale Realm permit Catalina s ˘a fie integrat ˘a
în medii în care astfel de informa¸ tii de autentificare sunt deja create ¸ si între¸ tinute ¸ si apoi
s˘a foloseasc ˘a aceste informa¸ tii pentru a implementa Container Managed Security a¸ sa cum
este descris în Specifica¸ tia Servlet.
Tomcat poate fi folosit ca produs independent, cu propriul server Web intern sau
împreun ˘a cu alte servere Web, inclusiv Apache, Netscape Enterprise Server, Internet
Information Server (IIS) ¸ si Microsoft Personal Web Server. Tomcat necesit ˘a un mediu
Java Enterprise Runtime care s ˘a respecte JRE 1.1 sau o versiune ulterioar ˘a.
În centrul serviciilor de con¸ tinut Alfresco este serverul de aplica¸ tii, care gestioneaz ˘a
¸ si între¸ tine repository. Responsabilitatea primordial ˘a a serverului este de a furniza servicii
de utilizare în construirea solu¸ tiilor ECM. Toate aplica¸ tiile suitei de con¸ tinut Alfresco sunt
construite ¸ si executate de serverul de aplica¸ tii.
Serverul de aplica¸ tii expune un set de interfe¸ te publice la distan¸ t ˘a pentru a permite
unui client s ˘a comunice cu acesta. Interfe¸ tele publice de la distan¸ t ˘a sunt singura parte a
serverului vizibil ˘a clientului.
Pe plan intern, serverul cuprinde mai multe straturi. Structura include aspecte legate de
infrastructur ˘a, cum ar fi configura¸ tia, autentificarea, permisiunile ¸ si tranzac¸ tiile care
dep˘a¸ sesc toate capacit ˘a¸ tile. Infrastructura protejeaz ˘a, de asemenea, serverul de a fi legat de
orice implementare specific ˘a a mediului, cum ar fi managerii de tranzac¸ tii sau
mecanismele de cache.
Repository este construit pe aceast ˘a infrastructur ˘a, care în sine reprezint ˘a un element
de baz ˘a pentru con¸ tinutul, controlul ¸ si serviciile de colaborare. Fiecare capacitate a
depozitului ¸ si a serviciilor de con¸ tinut este asociat ˘a individual ca un modul cu propria
interfa¸ t ˘a ¸ si implementare în proces. Modulele sunt legate între ele de infrastructur ˘a prin
interfe¸ tele lor.
Un server de aplica¸ tii este un server autonom, capabil s ˘a r˘aspund ˘a cererilor prin
intermediul protocoalelor la distan¸ t ˘a. Un singur server poate suporta orice num ˘ar de
aplica¸ tii ¸ si clien¸ ti în care se pot ad ˘auga în mod arbitrar aplica¸ tii noi. Clien¸ tii comunic ˘a prin
leg˘aturile API la distan¸ t ˘a ¸ si prin leg ˘aturile de protocol, de¸ si pute¸ ti configura un server
pentru a omite sau a interzice anumite puncte de acces. Acest tip de implementare
beneficiaz ˘a de un server de aplica¸ tii în care serviciile de con¸ tinut Alfresco sunt incluse ca
o aplica¸ tie web. Func¸ tiile serverului de aplica¸ tie, cum ar fi gestionarea tranzac¸ tiilor ¸ si
punerea în comun a resurselor sunt prezente la baza Alfresco.

CAPITOLUL 2. MANAGEMENTUL DE DOCUMENTE 40
Pentru a sus¸ tine sistemele la scar ˘a larg ˘a, pute¸ ti grupa serviciile de con¸ tinut Alfresco.
Aceasta v ˘a permite s ˘a configura¸ ti mai multe servere pentru a lucra unul cu cel ˘alalt,
permi¸ tând ca cererile clien¸ tilor s ˘a fie îndeplinite în mai multe procesoare. Pute¸ ti grupa atât
cadrul de aplica¸ tii web, cât ¸ si serverul de aplica¸ tii de con¸ tinut, permi¸ tând fiec ˘arui nivel s ˘a
scad˘a independent.
Fiecare nod al unui server de aplica¸ tii cluster împ ˘art˘a¸ se¸ ste acela¸ si repository, de¸ si
repository însu¸ si poate fi replicat pe noduri, dac ˘a este necesar. Sunt de asemenea
distribuite cache-urile ¸ si indexurile de c ˘autare, ceea ce înseamn ˘a c˘a un server de aplica¸ tii
de con¸ tinut cluster arat ˘a ¸ si ac¸ tioneaz ˘a ca un singur server de aplica¸ tii de con¸ tinut.
Acesta este un caz special al implement ˘arii în grupuri; în caz de e¸ sec, o aplica¸ tie poate
trece la o versiune de rezerv ˘a a stivei desf ˘a¸ surate. În func¸ tie de configura¸ tie, versiunea de
rezerv ˘a ar putea fi disponibil ˘a imediat dup ˘a o eroare (cunoscut ˘a sub numele de backup
rapid) sau la scurt timp dup ˘a e¸ sec, în urma unor modific ˘ari de configurare (cunoscute sub
numele de backup imediat). Unul dintre nodurile din cluster este desemnat ca master, care
accept ˘a aplica¸ tia live, în timp ce cel ˘alalt nod este desemnat predecesor, care se repet ˘a cu
masterul. Predecesorul r ˘amâne citit numai pân ˘a la punctul de trecere.
Multi-tenancy permite unui singur server de aplica¸ tii de con¸ tinut (grupat sau nu) s ˘a
suporte mai mul¸ ti administratori. Din punct de vedere fizic, to¸ ti administratorii au aceea¸ si
infrastructur ˘a, cum ar fi nodurile implementate într-un cluster. Cu toate acestea, datele
între¸ tinute de un administrator nu pot fi citite sau manipulate de un alt administrator. O
implementare de acest tip u¸ sureaz ˘a administrarea ¸ si reduce costurile asociate cu
men¸ tinerea mai multor aplica¸ tii ¸ si baze de utilizare, în special atunci când face¸ ti upgrade
la serviciile de baz ˘a sau efectua¸ ti copii de rezerv ˘a, deoarece aceasta trebuie f ˘acut˘a o
singur ˘a dat ˘a pentru to¸ ti administratorii.
Directorul de nivel superior al ierarhiei aplica¸ tiilor web este, de asemenea, r ˘ad˘acina
de documente a aplica¸ tie. Aici sunt plasate fi¸ sierele HTML ¸ si paginile JSP care cuprind
interfa¸ ta de utilizare a aplica¸ tie. Atunci când administratorul de sistem deplaseaz ˘a aplica¸ tia
într-un anumit server, el atribuie o cale de context aplica¸ tiei.
La fel ca majoritatea containerelor de servlet, Tomcat suport ˘a ¸ si mecanisme pentru a
instala o singur ˘a dat ˘a fi¸ siere JAR din bibliotec ˘a ¸ si a le face vizibile pentru toate aplica¸ tiile
web instalate (f ˘ar˘a a fi incluse în interiorul aplica¸ tiei web). Loca¸ tia frecvent utilizat ˘a în
cadrul unei instal ˘ari Tomcat pentru codul partajat este $ CATALINA_HOME /lib. Fi¸ sierele
JAR plasate aici sunt vizibile atât pentru aplica¸ tiile web, cât ¸ si pentru codul intern Tomcat.
Fi¸ sierul /WEB-INF /web.xml este un document XML ¸ si define¸ ste totul despre aplica¸ tia
pe care trebuie s ˘a o cunoasc ˘a un server (cu excep¸ tia c ˘aii de context atribuite de

CAPITOLUL 2. MANAGEMENTUL DE DOCUMENTE 41
administratorul de sistem în momentul implement ˘arii aplica¸ tiei).
Un fi¸ sier /META-INF /context.xml poate fi folosit pentru a defini op¸ tiunile de
configurare specifice Tomcat, cum ar fi un jurnal de acces, sursele de date, configura¸ tia
managerului sesiunii ¸ si multe altele.
2.3 Inteligen¸ ta artificial ˘a
Inteligen¸ ta artificial ˘a (IA) din domeniul informaticii încearc ˘a s˘a demonstreze ¸ si s ˘a
imite, prin procese mecanice sau computa¸ tionale, unele sau toate aspectele inteligen¸ tei
umane. Printre aceste aspecte ale inteligen¸ tei cele mai vizibile sunt abilitatea de a
interac¸ tiona cu mediul prin mijloace senzoriale ¸ si abilitatea de a lua decizii în împrejur ˘ari
neprev ˘azute f ˘ar˘a ca interven¸ tia omului s ˘a fie prezent ˘a. Zonele unde cercetare în IA este
prezent ˘a sunt: jocul, în¸ telegerea ¸ si sinteza limbajului natural, viziunea pe calculator,
rezolvarea problemelor, înv ˘a¸ tarea ¸ si nu în ultimul rând robotica.
În fragmentul anterior a fost eviden¸ tiat ˘a o abordare la modul general a inteligen¸ tei
artificiale. Acest domeniu are la baz ˘a o defini¸ tie complex ˘a a inteligen¸ tei artificiale, în
primul rând pentru c ˘a nu exist ˘a prea mult ˘a în¸ telegere cu privire la ceea ce constituie
inteligen¸ ta. Interpret ˘arile care implic ˘a inteligen¸ ta artificial ˘a variaz ˘a, dar cele mai multe pot
fi clasificate într-una din cele trei moduri. Inteligen¸ ta poate fi considerat ˘a precum o
calitate, o proprietate individual ˘a care este delimitat ˘a de toate celelalte propriet ˘a¸ ti ale
persoanei umane.
Inteligen¸ ta este prezent ˘a ¸ si în func¸ tiile pe care le îndepline¸ ste, în ac¸ tiuni sau în
capacitatea de a îndeplini anumite sarcini. În cele din urm ˘a, unii cercet ˘atori afirm ˘a c˘a
inteligen¸ ta este o calitate care poate fi dobândit ˘a ¸ si demonstrat ˘a doar prin rela¸ tia cu alte
fiin¸ te inteligente. Toate în¸ telegerile de inteligen¸ t ˘a a fost utilizate ca baz ˘a pentru o abordare
a dezvolt ˘arii programelor de calculator cu caracteristici inteligente.
Activit ˘a¸ tiile concepute pentru inteligen¸ t ˘a artificial ˘a au la baz ˘a o serie de caracteristici,
printre care cele mai importante ar fi: vorbire, înv ˘a¸ tare, planificare ¸ si rezolvarea
problemelor.
Inteligen¸ ta artificial ˘a cel mai repede a fost descoperit ˘a în domenii în care problemele ar
putea fi caracterizate cu simplitate utilizând un num ˘ar limitat de obiecte care func¸ tioneaz ˘a
într-o manier ˘a extrem de regulat ˘a, cum ar fi jocuri. Jocul de ¸ sah fun¸ tioneaz ˘a într-o lume în
care numai obiectele sunt treizeci ¸ si dou ˘a de piese care se deplaseaz ˘a pe o tabl ˘a de sah de

CAPITOLUL 2. MANAGEMENTUL DE DOCUMENTE 42
¸ saizeci ¸ si patru, în conformitate cu un num ˘ar limitat de reguli. Op¸ tiunile limitate pe care
le ofer ˘a aceast ˘a lume ofer ˘a computerului poten¸ tialul de a privi cu mult înainte, examinând
toate mi¸ sc ˘arile ¸ si contrac¸ tiile posibile, c ˘autând o secven¸ t ˘a care va l ˘asa piesele sale în pozi¸ tia
cea mai bun ˘a. Alte succese pentru IA au ap ˘arut rapid în domenii aproximativ la fel, cum ar
fi diagnosticul medical, prospectarea mineral ˘a, analiza chimic ˘a ¸ si demonstrarea teoremei
matematice.
Cercetarea aferent ˘a cu inteligen¸ ta artificial ˘a este extrem de tehnic ˘a ¸ si specializat ˘a.
Problemele de baz ˘a ale inteligen¸ tei artificiale cuprind programarea computerelor pentru
anumite tr ˘as˘aturi precum: cuno¸ stin¸ te, ra¸ tionament, rezolvarea problemelor, percep¸ tie,
înv˘a¸ tare, planificare ¸ si abilitatea de a manipula ¸ si de a muta obiecte.
Tehnologia cunoa¸ sterii este o parte esen¸ tial ˘a a cercet ˘arii IA. Ma¸ sinile pot ac¸ tiona
adesea ¸ si reac¸ tioneaz ˘a ca oamenii numai dac ˘a au informa¸ tii multe referitoare la lume.
Inteligen¸ ta artificial ˘a trebuie s ˘a aib ˘a acces la obiecte, categorii, propriet ˘a¸ ti ¸ si rela¸ tii între
ele pentru a implementa mecanismul asociat ingineriei cunoa¸ sterii. Ini¸ tierea puterii
comune, a ra¸ tionamentului ¸ si a rezolv ˘arii problemelor în ma¸ sini este o abordare dificil ˘a.
Înv˘a¸ tarea în cod ma¸ sin ˘a este o alt ˘a parte central ˘a a IA. Înv ˘a¸ tarea f ˘ar˘a niciun fel de
supraveghere necesit ˘a o capacitate de a identifica modelele în fluxurile de intr ˘ari, în timp
ce înv ˘a¸ tarea cu o supraveghere adecvat ˘a implic ˘a clasificarea ¸ si regresiile numerice.
Clasificarea determin ˘a categoria în care un obiect apar¸ tine ¸ si regresia se refer ˘a la
ob¸ tinerea unui set de exemple numerice de intrare sau ie¸ sire, descoperind astfel func¸ tii
care s ˘a permit ˘a generarea unor ie¸ siri adecvate de la intr ˘arile respective.
Analiza matematic ˘a a algoritmilor de înv ˘a¸ tare a ma¸ sinilor ¸ si performan¸ tele acestora este
o ramur ˘a bine definit ˘a a ¸ stiin¸ telor teoretice informatice, adesea denumit ˘a teorie de înv ˘a¸ tare
computa¸ tional ˘a.
Percep¸ tia ma¸ sinii se refer ˘a la capacitatea de a utiliza intr ˘ari senzoriale pentru a deduce
diferitele aspecte ale lumii, în timp ce viziunea pe computer este puterea de a analiza
intr˘arile vizuale cu câteva subprobleme, cum ar fi recunoa¸ sterea facial ˘a, obiectul ¸ si gestul.
Robotica este de asemenea un domeniu important corespunz ˘ator IA. Robo¸ tii au nevoie
de inteligen¸ t ˘a pentru a gestiona sarcinile, cum ar fi manipularea obiectului ¸ si navigarea,
împreun ˘a cu subprobleme legate de localizare, planificarea mi¸ sc ˘arii ¸ si cartografiere.
De¸ si au existat pu¸ tine progrese în dezvoltarea unei inteligen¸ te solide prin metode de
programare simbolic ˘a, încercarea de programare a computerelor pentru a îndeplini func¸ tii
umane limitate a fost destul de reu¸ sit ˘a. O mare parte din ceea ce este numit ˘a în prezent
cercetarea IA urmeaz ˘a un model func¸ tional, aplicând anumite tehnici de programare, cum
ar fi ingineria cunoa¸ sterii, logica fuzzy, algoritmii genetici, re¸ telele neuronale, c ˘autarea

CAPITOLUL 2. MANAGEMENTUL DE DOCUMENTE 43
euristic ˘a ¸ si înv ˘a¸ tarea prin metode statistice, la probleme practice.
Inteligen¸ ta artificial ˘a are la baz ˘a programe de lucru care pot prelua anumite sarcini
umane. Astfel de programe sunt utilizate în opera¸ tiunile de produc¸ tie, transport, educa¸ tie
sau pie¸ te financiare. Pentru o inteligen¸ t ˘a artificial ˘a func¸ tional ˘a, nu este necesar s ˘a existe o
calitate numit ˘a inteligen¸ t ˘a care s ˘a fie împ ˘art˘a¸ sit˘a de oameni ¸ si computere. Toate
calculatoarele trebuie s ˘a îndeplineasc ˘a o sarcin ˘a care necesit ˘a informa¸ tii inteligente pentru
a efectua un om.
Nu este, de asemenea, necesar în IA s ˘a model ˘am un program dup ˘a procesele de gândire
pe care oamenii le folosesc. Dac ˘a rezultatele sunt bune, atunci este posibil s ˘a exploateze
capacitatea de vitez ˘a ¸ si de stocare a computerului digital, ignorând p ˘ar¸ ti ale gândirii umane
care nu sunt în¸ telese sau u¸ sor de modelat, cum ar fi intui¸ tia.
Exist ˘a dou ˘a problematici în IA. Prima este dificultatea de a determina ce se încadreaz ˘a
în categoria IA ¸ si care este pur ¸ si simplu o aplica¸ tie informatic ˘a obi¸ snuit ˘a. O defini¸ tie a
IA care include orice program care realizeaz ˘a o anumit ˘a func¸ tie în mod normal f ˘acut de
o fiin¸ t ˘a uman ˘a ar cuprinde practic toate programele de calculator. Nu exist ˘a niciun acord
între oamenii de ¸ stiin¸ t ˘a din domeniul calculatoarelor cu privire la tipurile de programe.
Pentru o abordare func¸ tional ˘a corespunz ˘atoare inteligen¸ tei complete a oamenilor, ar fi
necesar s ˘a se precizeze nu numai func¸ tiile care alc ˘atuiesc inteligen¸ ta, ci ¸ si s ˘a se asigure c ˘a
aceste func¸ tii s ˘a fie congruente în mod corespunz ˘ator una cu cealalt ˘a. Programele IA
func¸ tionale sunt greu concepute pentru a fi compatibile cu alte programe. Fiecare folose¸ ste
numeroase tehnici ¸ si metode, a c ˘aror sum ˘a este pu¸ tin probabil s ˘a surprind ˘a întreaga
inteligen¸ t ˘a uman ˘a. Mul¸ ti din comunitatea IA sunt, de asemenea, nemul¸ tumi¸ ti de colec¸ tia
de programe orientate spre sarcini. Construirea unei inteligen¸ te generale umane, la fel de
dificil ˘a cum pare, r ˘amâne viziunea.
Un quiz uman este conectat prin terminal la dou ˘a subiecte, unul la om ¸ si cel ˘alalt o
ma¸ sin ˘a. Dac ˘a quiz-ul e¸ sueaz ˘a la fel de des ca el sau ea reu¸ sind s ˘a determine care este
omul ¸ si care ma¸ sina, ma¸ sina ar putea fi considerat ˘a ca având inteligen¸ t ˘a. Testul Turing nu
se bazeaz ˘a pe finalizarea sarcinilor sau pe rezolvarea problemelor de c ˘atre ma¸ sin ˘a, ci pe
capacitatea ma¸ sinii de a se referi la o fiin¸ t ˘a uman ˘a în conversa¸ tie. Turing a prezis c ˘a, pân ˘a
în anul 2000, ar exista computere care ar putea p ˘ac˘ali un quiz cel pu¸ tin treizeci la sut ˘a
din timp. Aceasta, ca ¸ si majoritatea predic¸ tiilor din IA, a fost extrem de optimist ˘a. Niciun
computer nu s-a apropiat înc ˘a de trecerea testului Turing.
Testul Turing folose¸ ste discursul rela¸ tional pentru a demonstra inteligen¸ ta. Cu toate
acestea, Turing observ ˘a, de asemenea, importan¸ ta de a fi în rela¸ tie pentru dobândirea
cuno¸ stin¸ telor sau a inteligen¸ tei. Acesta estimeaz ˘a c˘a programarea cuno¸ stin¸ telor de fond

CAPITOLUL 2. MANAGEMENTUL DE DOCUMENTE 44
necesare unei forme restrânse a jocului ar dura cel pu¸ tin trei sute de ani pentru a fi
finalizat ˘a.
Se presupune c ˘a setul corespunz ˘ator de cuno¸ stin¸ te ar putea fi identificat la început.
Turing sugereaz ˘a c˘a, mai degrab ˘a decât încercarea de a imita o minte adul¸ ti, oamenii de
¸ stiin¸ t ˘a de la calculator ar trebui s ˘a încerce s ˘a construiasc ˘a o minte care simuleaz ˘a un copil.
O astfel de minte, atunci când ar avea o educa¸ tie adecvat ˘a, ar înv ˘a¸ ta ¸ si se va transforma într-
o minte adul¸ t ˘a. Testul Turing nu face presupuneri cu privire la modul în care computerul
ajunge la r ˘aspunsurile sale. Nu trebuie s ˘a existe nicio asem ˘anare în func¸ tionarea intern ˘a
între calculator ¸ si creierul uman.
Cu toate acestea, o zon ˘a de IA care arat ˘a unele promisiuni este cea a re¸ telelor
neuronale, sisteme de circuite care reproduc modelele de neuroni g ˘asite în creier. Plasele
neuronale la momentul actual sunt totu¸ si limitate. Creierul uman are miliarde de neuroni,
iar cercet ˘atorii trebuie s ˘a în¸ teleag ˘a atât modul în care ace¸ sti neuroni sunt conecta¸ ti, cât ¸ si
modul în care diferitele substan¸ te chimice neurotransmitatoare din creier func¸ tioneaz ˘a. În
ciuda acestor limit ˘ari, plasele neuronale au reprodus comportamente interesante în
domenii precum recunoa¸ sterea vorbelor sau a imaginilor, prelucrarea limbajului natural ¸ si
înv˘a¸ tarea.
Un calculator cu adev ˘arat inteligent r ˘amâne în domeniul specula¸ tiilor. De¸ si cercet ˘atorii
au afirmat în permanen¸ t ˘a c˘a computerele inteligente sunt imanente, progresul în IA a fost
limitat. Computerele cu inten¸ tionalitate ¸ si con¸ stiin¸ t ˘a de sine, cu abilit ˘a¸ ti de gândire pe
deplin umane sau abilitatea de a fi în rela¸ tie, exist ˘a doar în domeniul viselor ¸ si dorin¸ telor,
un domeniu explorat în fic¸ tiune ¸ si fantezie.1
1Artificial Intelligence, http://www.encyclopedia.com

Capitolul 3
INTEGRAREA APLICA¸ TIEI PE LINUX
3.1 PuTTY
PuTTY func¸ tioneaz ˘a prin trimiterea de comenzi tipizate ¸ si primirea de r ˘aspunsuri de tip
text pe un socket tcp /ip ca ¸ si terminalul tradi¸ tional (TTY), dar utilizeaz ˘a socket securizat
(SSH) cu criptare chei publice care înglobeaz ˘a înc ˘arc˘aturile pachetului. SSH, Telnet ¸ si
Rlogin sunt trei modalit ˘a¸ ti de a face acela¸ si lucru: conectarea la un computer cu mai mul¸ ti
utilizatori de la un alt computer, printr-o re¸ tea.
Sistemele de operare multi-utilizator, cum ar fi Unix ¸ si VMS, prezint ˘a de obicei o
interfa¸ t ˘a de linie de comand ˘a pentru utilizator, la fel ca Prompt Command sau MS-DOS
Prompt în Windows. Sistemul tip ˘are¸ ste un prompt ¸ si se vor introduce comenzi pe care
sistemul le va respecta. Aceste protocoale pot fi de asemenea folosite pentru alte tipuri de
sesiuni interactive bazate pe tastatur ˘a. În special, exist ˘a o mul¸ time de buletine de bord,
sisteme de talker ¸ si MUD (Multi-User Dungeons) care accept ˘a accesul folosind Telnet.
Exist ˘a chiar ¸ si câteva care suport ˘a SSH.
În general, folosirea SSH, Telnet sau Rlogin de c ˘atre utilizator este util ˘a atunci când:
exist ˘a un cont pe un sistem Unix sau VMS care poate fi accesat din alt ˘a parte sau furnizorul
de servicii Internet ofer ˘a un cont de conectare pe un server web.
SSH este un protocol recent proiectat, cu o înalt ˘a securitate. Utilizeaz ˘a criptografia
puternic ˘a pentru a proteja conexiunea împotriva intercept ˘arilor, a deturn ˘arii ¸ si a altor
atacuri. Telnet ¸ si Rlogin sunt ambele protocoale mai vechi care ofer ˘a o securitate minim ˘a.
SSH permite conectarea la server ¸ si trimiterea automat ˘a a unei comenzi, astfel încât
serverul s ˘a execute acea comand ˘a ¸ si apoi s ˘a se deconecteze. Deci, se poate utiliza în
procesarea automat ˘a. Internetul este un mediu ostil ¸ si securitatea este responsabilitatea
45

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 46
tuturor.
De obicei, majoritatea op¸ tiunilor de configurare nu trebuie s ˘a fie modificate, acestea vor
r˘amâne la fel pentru a începe cel mai simplu tip de sesiune, care implic ˘a introducerea unor
parametri de baz ˘a.
Figura 3.1: SESIUNE CONECTARE LA SERVER INCESA
În caseta nume gazd ˘a se va introduce numele gazdei Internet al serverului la care se
dore¸ ste conectarea. Pe lâng ˘a caseta de nume de care s-a amintit anterior, un utilizator
trebuie s ˘a aleag ˘a un protocol la momentul acesta. în func¸ tie de mediul de lucru pe care îl
de¸ tine, acesta, pentru o bun ˘a securizare a serverului, de cele mai multe ori, se merge pe
tipul SSH.
Cele mai instabile protocoale sunt: Telnet ¸ si Rlogin. Al patrulea protocol, Raw, nu este
folosit pentru sesiuni interactive de conectare, ¸ si de obicei acest lucru pentru depanarea
altor servicii Internet Cea de-a cincea op¸ tiune, Serial, este utilizat ˘a pentru conectarea la o
linie local ˘a.
Odat ˘a cu schimbarea protocolului, num ˘arul din caseta Port se va schimba. Acest lucru
este normal: se întâmpl ˘a deoarece diversele servicii de conectare sunt furnizate de obicei pe
diferite porturi de re¸ tea de c ˘atre server. Majoritatea serverelor vor utiliza numerele standard
ale porturilor, astfel încât nu trebuie s ˘a modifice setarea portului.
SSH este conceput pentru a v ˘a proteja împotriva atacurilor de re¸ tea cunoscute sub
numele de spoofing: redirec¸ tionarea în secret a conexiunii cu un alt computer, astfel încât
parola trimis ˘a de utilizator s ˘a fie recep¸ tionat ˘a de o alt ˘a ma¸ sin ˘a folosit ˘a de atacator.

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 47
Folosind aceast ˘a tehnic ˘a, un atacator ar putea afla parola care protejeaz ˘a contul de
conectare.
PuTTY înregistreaz ˘a cheia gazd ˘a pentru fiecare server la care un utilizator se
conecteaz ˘a, în Registrul Windows. De fiecare dat ˘a când se întâmpl ˘a conectarea la un
server, verific ˘a dac ˘a cheia gazd ˘a prezentat ˘a de server este aceea¸ si cheie de gazd ˘a ca ¸ si la
ultima conectare.
Dup˘a ce conectarea s-a efectuat cu succes, în mod general, trebuie s ˘a fie afi¸ sat ˘a consola
care va permite s ˘a introducerea utilizatorul ¸ si parolei acordat ˘a de administrator. Dup ˘a ce se
vor introduce numele de utilizator ¸ si parola, serverul va acorda acces ¸ si va începe sesiunea.
Dac˘a parola va fi introdus ˘a gre¸ sit, server-ul permite introducerea de mai multe ori.
Figura 3.2: PROMPT LOGARE
Dac˘a se utilizeaz ˘a SSH, trebuie s ˘a nu se introduc ˘a numele de utilizator în mod gre¸ sit,
deoarece nu mai exist ˘a posibilitatea de a corecta dup ˘a ce se apas ˘a butonul Return. Multe
servere SSH nu permit efectuarea multipl ˘a de încerc ˘ari de conectare utilizând diferite nume
de utilizator. Dac ˘a se introduce numele de utilizator în mod gre¸ sit, trebuie s ˘a se închid ˘a
consola PuTTY ¸ si s ˘a înceap ˘a din nou. Multe servere de conectare, în special computerele
Unix, trateaz ˘a cu majuscule ¸ si cu litere mici atât de diferite atunci când se verific ˘a parola.
A¸ sa c ˘a dac ˘a Caps Lock este pornit, parola va fi probabil refuzat ˘a.
Dup˘a ce se realizeaz ˘a conectarea la server, ceea ce se întâmpl ˘a în continuare depinde
foarte mult de configurarea server-ului. Cele mai multe servere vor imprima un fel de mesaj
de conectare ¸ si apoi vor prezenta un prompt, la care se pot introduce comenzi pe care le va
efectua serverul. Unele servere ofer ˘a asisten¸ t ˘a online.

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 48
În momentul în care activitatea întreprins ˘a pe server este terminat ˘a, utilizatorul trebuie
s˘a se deconecteze prin tastarea comenzii de logout a serverului. Acest lucru poate varia
între servere. Când serverul proceseaz ˘a comanda de deconectare, fereastra PuTTY trebuie
s˘a se închid ˘a automat. O sesiune PuTTY se mai poate termina din butonul Închidere aflat în
col¸ tul din dreapta sus. Aceast ˘a practic ˘a este, îns ˘a, riscant ˘a, deoarece provoac ˘a o terminare
nea¸ steptat ˘a de software. Singurul caz, în care ar fi permis ˘a aceast ˘a situa¸ tie, este aceea când
aplica¸ tia nu mai r ˘aspunde la comenzi.
Multe complexit ˘a¸ ti ¸ si caracteristici ale lui PuTTY se afl ˘a în panoul de configurare.
Odat ˘a ce s-a deschis o sesiune ¸ si utilizatorul are acces la prompt, lucrurile ar trebui s ˘a fie
destul de simple dup ˘a aceea. Cu toate acestea, exist ˘a câteva caracteristici utile disponibile.
La fel ca majoritatea emulatorilor de terminale, PuTTY permite copierea ¸ si lipirea
textului în loc s ˘a fie tastat din nou. De asemenea, mecanismul de copiere ¸ si lipire
utilizeaz ˘a clipboard-ul Windows, astfel încât s ˘a se poat ˘a insera (de exemplu) adresele
URL într-un browser web sau s ˘a se insereze dintr-un procesor de text sau o foaie de calcul
într-o sesiune terminal ˘a. Copierea ¸ si lipirea lui PuTTY func¸ tioneaz ˘a în întregime cu
mouse-ul. Pentru a copia textul în clipboard, trebuie doar s ˘a se fac ˘a click pe butonul stâng
al mouse-ului în fereastra terminalului ¸ si s ˘a se gliseze pentru a selecta textul. Când se
elibereaz ˘a butonul, textul este copiat automat în clipboard. Nu este nevoie ap ˘asarea pe
Ctrl-C sau Ctrl-Ins. De fapt, dac ˘a se apas ˘a pe Ctrl-C, PuTTY va trimite un caracter Ctrl-C
pe sesiunea la server unde probabil va cauza întreruperea procesului.
Când se face click pe butonul din dreapta al mouse-ului, PuTTY va citi orice este în
clipboardul Windows ¸ si îl va re¸ tine în sesiunea , exact ca ¸ si cum ar fi fost tastat la tastatur ˘a.
(Prin urmare, trebuie ca utilizatorul s ˘a aib ˘a grij ˘a la inserarea textului formatat într-un editor
care face indentare automat ˘a.)
PuTTY ¸ tine eviden¸ ta textului care a fost derulat în partea de sus a terminalului. Deci,
dac˘a pe ecran apare ceva care se dore¸ ste a fi citit, dar se deplaseaz ˘a prea repede ¸ si este
derulat în momentul în care se dore¸ ste s ˘a fie citit, exist ˘a o bar ˘a de derulare în partea dreapt ˘a
ca ajut ˘a utilizatorul s ˘a citeast ˘a tot textul. Pe lâng ˘a folosirea barei de derulare, de asemenea,
se poate citi textul ap ˘asând Shift-PgUp ¸ si Shift-PgDn. Se poate parcurge o linie în acela¸ si
timp folosind Ctrl-PgUp ¸ si Ctrl-PgDn.
Dac˘a se face click pe butonul stâng al mouse-ului pe pictograma din col¸ tul din stânga
sus al ferestrei terminale a lui PuTTY sau se face click pe butonul din dreapta al
mouse-ului pe bara de titlu, se poate vedea meniul standard Windows care con¸ tine
elemente precum Minimizare, Mutare, Dimensiune ¸ si Închidere. Meniul de sistem al lui
PuTTY con¸ tine func¸ tii suplimentare de program în plus fa¸ t ˘a de op¸ tiunile standard

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 49
Windows.
Dac˘a se va alege log event din meniul sistemului, va ap ˘area o fereastr ˘a în care PuTTY
înregistreaz ˘a evenimente semnificative în timpul conexiunii. Cele mai multe evenimente
din jurnal vor avea probabil loc în timpul lans ˘arii sesiunii, dar câteva pot ap ˘area în orice
moment al sesiunii ¸ si unul sau dou ˘a se întâmpl ˘a la sfâr¸ sit. Se poate folosi mouse-ul pentru
a selecta una sau mai multe rânduri din Jurnalul de evenimente ¸ si se apas ˘a butonul Copiere
pentru a le copia în clipboard.
Cache-ul noului tip de cheie gazd ˘a disponibil numai în SSH-2, apare numai dac ˘a
serverul are chei gazd ˘a pe care PuTTY nu le-a stocat deja în memoria cache, ¸ si deci nu o
s˘a ia în considerare. Selectarea unei chei aici permite PuTTY s ˘a utilizeze acea cheie acum
¸ si în viitor: PuTTY va face un nou schimb de chei cu cheia selectat ˘a ¸ si va ad ˘auga imediat
acea cheie în cache-ul s ˘au permanent (baz ˘andu-se pe cheia gazd ˘a folosit ˘a la începutul
Conexiunii pentru confirmarea încruci¸ sat ˘a a cheii noi).
În mod normal, PuTTY va continua s ˘a utilizeze o cheie gazd ˘a pe care o cunoa¸ ste deja,
chiar dac ˘a serverul ofer ˘a formate cheie pe care PuTTY altfel le-ar prefera, pentru a evita
solicit ˘arile cheilor de la gazd ˘a. Protocolul SSH, din p ˘acate, nu are facilit ˘a¸ ti organizate
pentru migrarea ¸ si r ˘asturnarea cheilor gazd ˘a, îns ˘a acest lucru permite actualizarea
manual ˘a.
Dac˘a se va selecta – modificare set ˘ari – din meniul sistemului, PuTTY va afi¸ sa o
versiune descresc ˘atoare a casetei de configurare ini¸ tiale. Acest lucru permite reglarea celor
mai multe propriet ˘a¸ ti ale sesiunii curente. Se pot modifica dimensiunea terminalului,
fontul, ac¸ tiunile diferitelor ap ˘as˘ari de taste, culorile ¸ si a¸ sa mai departe.
Unele dintre op¸ tiunile disponibile în caseta principal ˘a de configurare nu sunt afi¸ sate în
caseta de deconectare a modific ˘arilor. Acestea sunt de obicei op¸ tiuni care nu au sens s ˘a se
schimbe în mijlocul unei sesiuni.
Op¸ tiunea “Clear Scrollback“ din meniul sistemului PuTTY indic ˘a eliminarea tuturor
liniilor de text care au fost p ˘astrate. Op¸ tiunea “Reset Terminal“ determin ˘a o resetare
complet ˘a a emula¸ tiei terminalului. Terminalul seriei VT este un software complex ¸ si poate
intra cu u¸ surin¸ t ˘a într-o stare în care întregul text imprimat devine de necitit. Dac ˘a se
înt˘ampl ˘a acest lucru, selectarea Reset Terminal ar trebui s ˘a o sorteze.
În anumite scopuri, un utilizator dore¸ ste s ˘a înregistreze tot ce se afi¸ seaz ˘a pe ecran.
Pentru a începe un jurnal de sesiuni, se selecteaz ˘a Modificare set ˘ari din meniul sistemului
¸ si se acceseaz ˘a panoul Logare. Se va introduce un nume de fi¸ sier jurnal ¸ si se va selecta un
mod de înregistrare. (Se pot loga toate ie¸ sirile de sesiune, inclusiv secven¸ tele de control
terminale, sau se poate salva doar textul.).

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 50
Dac˘a se g ˘asesc caractere speciale care nu sunt afi¸ sate corect în sesiunea PuTTY , este
posibil ca PuTTY s ˘a interpreteze caracterele trimise de server în func¸ tie de setul de
caractere pe care îl consider ˘a oportun dar nu cel corect.
Protocolul SSH are capacitatea de a transmite în siguran¸ t ˘a aplica¸ tiile X Window
System pe conexiunea SSH criptat ˘a, astfel înc ˘at un utilizator s ˘a poat ˘a rula o aplica¸ tie pe
serverul SSH ¸ si ma¸ sina local ˘a f˘ar˘a s˘a trimit ˘a trafic de re¸ tea X în clar. Acest lucru se va
instala, probabil, ca num ˘ar de afi¸ sare 0 pe ma¸ sina local ˘a. Ar trebui bifat ˘a caseta “Activa¸ ti
redirec¸ tionarea X11“ din panoul X11 înainte de a începe sesiunea SSH.
Protocolul SSH are capacitatea de a transmite conexiuni de re¸ tea (TCP) arbitrare pe
conexiunea SSH criptat ˘a, pentru a evita ca traficul de re¸ tea s ˘a fie trimis în mod clar. De
exemplu, se poate utiliza acest lucru pentru conectarea de la computerul de acas ˘a la un
server POP-3 de pe o ma¸ sin ˘a la distan¸ t ˘a, f˘ar˘a ca parola POP-3 s ˘a fie vizibil ˘a pentru sni erii
de re¸ tea.
Se poate, de asemenea, redirec¸ tionarea porturilor în direc¸ tia opus ˘a: aranja¸ ti ca un anumit
num˘ar de port de pe server s ˘a fie redirec¸ tionat înapoi la PC ca o conexiune la un serviciu de
pe PC sau în apropierea acestuia. Pentru a face acest lucru, trebuie doar selectarea butonului
radio “Remote“ în locul celui “Local“. Caseta “Port surs ˘a“ va specifica acum un num ˘ar de
port pe server.
O modalitate alternativ ˘a de transmitere a conexiunilor locale c ˘atre gazdele de la
distan¸ t ˘a este utilizarea proxy-urilor SOCKS dinamice. În acest mod, PuTTY ac¸ tioneaz ˘a ca
un server SOCKS, pe care programele con¸ stiente de SOCKS se pot conecta ¸ si deschide
conexiunile direc¸ tionate c ˘atre destina¸ tia aleas ˘a, astfel înc ˘at aceasta poate fi o alternativ ˘a la
liste lungi de trimiteri statice. Pentru a utiliza acest mod, va trebui ca utilizatorul s ˘a
selecteze butonul radio Dinamic în loc de Local ¸ si în caseta Destina¸ tie s ˘a nu fie introdus
nimic. PuTTY va asculta apoi conexiuni SOCKS pe portul pe care utilizatorul l-a
specificat. Majoritatea browserelor web pot fi configurate s ˘a se conecteze la acest serviciu
proxy SOCKS. De asemenea, se pot transmite alte conexiuni PuTTY prin intermediul
set˘arii panoului de control Proxy.
De asemenea, se poate specifica o adres ˘a IP pentru ascultare. În mod obi¸ snuit, o
ma¸ sin ˘a Windows poate fi solicitat ˘a s˘a asculte pe orice adres ˘a IP din gama 127 *. *. * Cu
toate acestea sunt adrese loopback disponibile numai pentru ma¸ sina local ˘a. Acest lucru
poate fi util dac ˘a programul care se conecteaz ˘a la portul redirec¸ tionat nu permite
schimbarea num ˘arului de port pe care îl utilizeaz ˘a. Aceast ˘a caracteristic ˘a este disponibil ˘a
pentru porturile redirec¸ tionate local la distan¸ t ˘a. SSH-1 nu poate s ˘a o suporte pentru
porturile de la distan¸ t ˘a la cele locale, în timp ce SSH-2 o poate sus¸ tine teoretic, dar

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 51
serverele nu vor coopera neap ˘arat.
Multe protocoale de Internet sunt compuse din comenzi ¸ si r ˘aspunsuri în text simplu. De
exemplu, SMTP (protocolul utilizat pentru transferul de e-mail), NNTP (protocolul utilizat
pentru a transfera ¸ stirile Usenet) ¸ si HTTP (protocolul folosit pentru a servi paginile web)
constau toate din comenzi în text simplu.
Uneori poate fi util ˘a conectarea direct ˘a la unul dintre aceste servicii prin tastarea
comenzilor protocolului ¸ si urm ˘arind r ˘aspunsurile. Pe ma¸ sinile Unix, se poate face acest
lucru folosind comanda telnet a sistemului pentru conectarea la num ˘arul portului corect.
De exemplu, telnet mailserver.example.com 25 permite vorbirea direct ˘a cu serviciul
SMTP care ruleaz ˘a pe un server de po¸ st ˘a electronic ˘a.
De¸ si programul telnet Unix furnizeaz ˘a aceast ˘a func¸ tionalitate, protocolul utilizat nu este
cu adev ˘arat Telnet. Într-adev ˘ar, nu exist ˘a niciun protocol real. Octe¸ tii trimi¸ si în leg ˘atur˘a sunt
exact aceia tasta¸ ti, iar octe¸ tii afi¸ sa¸ ti pe ecran sunt exact aceia expedia¸ ti de server. Unix telnet
va încerca s ˘a detecteze dac ˘a serviciul cu care se vorbe¸ ste este un adev ˘arat serviciu Telnet
sau nu.
Pentru a face o conexiune de depanare la un serviciu de acest tip, pur ¸ si simplu se va
selecta al patrulea nume de protocol, Raw, din panoul de configura¸ tie Session. Conexiunea
se efectueaz ˘a prin introducerea unui nume de gazd ˘a ¸ si unui num ˘ar de port.
PuTTY se poate conecta direct la o linie local ˘a ca alternativ ˘a la realizarea unei
conexiuni de re¸ tea. În acest mod, textul introdus în fereastra PuTTY va fi trimis direct din
portul serial al computerului, iar datele primite prin acel port vor fi afi¸ sate în fereastra
PuTTY . Acest ˘a modalitatea este folosit ˘a de cele mai multe ori dac ˘a portul serial este
conectat la alt computer care are o conexiune serial ˘a.
Pentru a realiza o conexiune de acest tip, se va selecta Serial din panoul de configura¸ tie
Sesiune. C ˘asu¸ tele Nume gazd ˘a ¸ si Port se vor transforma în Serial line ¸ si Speed. Pentru
alte op¸ tiuni de configurare (bi¸ ti de date, bi¸ ti de oprire, paritate, control al debitului) se
poate utiliza panoul de configura¸ tie Serial. Prin urmare, PuTTY în modul serial va r ˘amâne
conectat pân ˘a când se va închide fereastra folosind butonul de închidere.
Dac˘a se invoc ˘a cu op¸ tiunea de cur ˘a¸ tare, PuTTY va elimina intr ˘arile din registru ¸ si
fi¸ sierul de primire aleatorie de la ma¸ sina local ˘a (dup ˘a confirmarea cu utilizatorul). De
asemenea, va încerca s ˘a elimine informa¸ tii despre sesiunile lansate recent în Windows.
PuTTY ¸ si instrumentele asociate suport ˘a o serie de op¸ tiuni de linie de comand ˘a, cele
mai multe dintre acestea fiind compatibile cu toate instrumentele. Cele mai multe dintre
instrumentele PuTTY pot fi interogate pentru a afla ce func¸ tionalit ˘a¸ ti au în spate prin
furnizarea op¸ tiunii -v. De asemenea, se poate specifica numele de utilizator pentru

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 52
conectarea la serverul de la distan¸ t ˘a utilizând op¸ tiunea -l.
Op¸ tiunea -m efectueaz ˘a o func¸ tie similar ˘a cu cea din caseta SSH din caseta de
configurare PuTTY . Cu toate acestea, op¸ tiunea -m se a¸ steapt ˘a s˘a primeasc ˘a un nume de
fi¸ sier local ¸ si va citi o comand ˘a din acel fi¸ sier. În sistemul UNIX se pot pune chiar mai
multe linii în acest fi¸ sier ¸ si se pot executa mai mult de o comand ˘a în ordine sau un script
întreg. Dar acest lucru este, probabil, un abuz ¸ si nu se poate a¸ stepta s ˘a func¸ tioneze pe toate
serverele.
Op¸ tiunea -N împiedic ˘a PuTTY s ˘a încerce s ˘a porneasc ˘a un shell sau o comand ˘a pe
serverul de la distan¸ t ˘a. S-ar putea ca un utilizator s ˘a foloseasc ˘a aceast ˘a op¸ tiune dac ˘a
utilizeaz ˘a numai conexiunea SSH pentru redirec¸ tionare port iar contul de utilizator de pe
server nu are capacitatea de a rula un shell.
Op¸ tiunea -nc împiedic ˘a PuTTY s ˘a încerce s ˘a porneasc ˘a un shell sau o comand ˘a pe
serverul de la distan¸ t ˘a. În schimb, acesta va instrui serverul de la distan¸ t ˘a s˘a deschid ˘a o
conexiune de re¸ tea la un nume de gazd ˘a ¸ si num ˘arul de port specificat s ˘a trateze conexiunea
la re¸ tea ca ¸ si cum ar fi fost sesiunea principal ˘a.
Dac˘a se dore¸ ste o conexiune SSH c ˘atre o gazd ˘a ¸ tint ˘a care se poate atinge numai dac ˘a
se trece printr-o gazd ˘a proxy ¸ si mai degrab ˘a decât s ˘a se utilizeze redirec¸ tionarea porturilor
care utilizeaz ˘a func¸ tia de proxy local. De asemenea, aceast ˘a caracteristic ˘a este disponibil ˘a
numai în versiunea protocolului SSH 2. Nu este disponibil ˘a în instrumentele de transfer de
fi¸ siere PSCP ¸ si PSFTP ci este disponibil ˘a în PuTTY , de¸ si este pu¸ tin probabil s ˘a fie foarte
util˘a în orice alt instrument decât Plink. De asemenea, -nc folose¸ ste aceea¸ si func¸ tionalitate
a serverului ca ¸ si port forwarding, deci nu va func¸ tiona dac ˘a administratorul de server a
dezactivat redirec¸ tionarea porturilor.
Op¸ tiunea -restrict-acl (numai pentru Windows) cauzeaz ˘a PuTTY (sau un alt
instrument PuTTY) blocarea controlului accesului la sistemul de operare. Dac ˘a aceasta
reu¸ se¸ ste, ar trebui s ˘a prezinte un obstacol suplimentar pentru malware-ul care a reu¸ sit s ˘a
ruleze sub acela¸ si id de utilizator ca ¸ si procesul PuTTY , împiedicându-l s ˘a se ata¸ seze la
PuTTY utilizând acelea¸ si utiliz ˘ari de depanare a interfe¸ telor ¸ si citirea informa¸ tiilor
sensibile din memoria sa.
Aceast ˘a op¸ tiune nu este activat ˘a în mod implicit, deoarece aceast ˘a form ˘a de interac¸ tiune
între programele Windows are multe utiliz ˘ari legitime, inclusiv software de accesibilitate,
cum ar fi cititoare de ecran. De asemenea, nu poate oferi securitate complet ˘a împotriva
acestei clase de atac în orice caz, deoarece PuTTY poate numai s ˘a-¸ si blocheze propriul
ACL dup ˘a ce a pornit, iar malware-ul ar putea intra în continuare în cazul în care atac ˘a
procesul între pornire ¸ si blocare. Deci, se îndep ˘arteaz ˘a comoditatea considerabil ˘a ¸ si ofer ˘a

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 53
o securitate mai pu¸ tin real ˘a decât se dore¸ ste.
Modul aranjare automat ˘a controleaz ˘a ce se întâmpl ˘a atunci când textul tip ˘arit într-o
fereastr ˘a PuTTY ajunge la marginea din dreapta a ferestrei. Dac ˘a este activat modul de
aranjare automat ˘a, dac ˘a o lung ˘a linie de text atinge marginea din dreapta, aceasta se va
scrie pe linia urm ˘atoare, astfel încât s ˘a se poat ˘a vedea tot textul. Dac ˘a modul de aranjare
automat ˘a este dezactivat, cursorul va r ˘amâne la marginea din dreapta a ecranului ¸ si toate
caracterele din linie vor fi imprimate unul peste cel ˘alalt.
Modul de aranjare automat ˘a poate fi activat ¸ si dezactivat prin secven¸ tele de control
trimise de server. Aceast ˘a op¸ tiune de configurare controleaz ˘a starea implicit ˘a, care va fi
restabilit ˘a când se reseteaz ˘a terminalul. Cu toate acestea, dac ˘a se modific ˘a aceast ˘a op¸ tiune
la mijlocul sesiunii utilizând “Modifica¸ ti set ˘arile“, aceasta va intra în vigoare imediat.
Modul de origine DEC este o op¸ tiune minor ˘a care controleaz ˘a modul în care PuTTY
interpreteaz ˘a secven¸ tele de control al pozi¸ tiei cursorului trimise de server. Serverul poate
trimite o secven¸ t ˘a de control care restric¸ tioneaz ˘a regiunea de derulare a afi¸ sajului. De
exemplu, într-un editor, serverul poate rezerva o linie în partea superioar ˘a a ecranului ¸ si o
linie în partea de jos ¸ si poate trimite o secven¸ t ˘a de control care face ca opera¸ tiile de
defilare s ˘a afecteze numai liniile r ˘amase.
Modul de origine DEC poate fi pornit ¸ si dezactivat prin secven¸ tele de control trimise
de server. Aceast ˘a op¸ tiune de configurare controleaz ˘a starea implicit ˘a, care va fi restabilit ˘a
când se reseteaz ˘a terminalul. Cu ecoul local dezactivat, caracterele introduse în fereastra
PuTTY nu sunt repetate în fereastr ˘a de PuTTY . Acestea sunt pur ¸ si simplu trimise la server.
(Serverul ar putea alege s ˘a le redea înapoi dar acest lucru nu poate fi controlat de la panoul
de control PuTTY .)
Unele tipuri de sesiuni au nevoie de echo local, iar multe dintre ele nu. În modul
implicit, PuTTY va încerca în mod automat s ˘a deduc ˘a dac ˘a ecua¸ tia local ˘a este sau nu
potrivit ˘a pentru sesiunea în care se lucreaz ˘a. Dac ˘a se descoper ˘a o decizie gre¸ sit ˘a, se poate
utiliza aceast ˘a op¸ tiune de configurare pentru a trece peste alegerea acesteia.
PuTTY permite editarea unei linii întregi care va fi validat ˘a prin folosirea return. Dac ˘a
se va produce o gre¸ seal ˘a, se poate utiliza tasta backspace pentru a o corecta înainte de a
ap˘asa Return ¸ si serverul nu va vedea vreodat ˘a gre¸ seala. Deoarece este greu s ˘a se editeze o
linie local f ˘ar˘a a o putea vizualiza, editarea liniei locale este folosit ˘a în cea mai mare parte
împreun ˘a cu echo local.
Unele tipuri de sesiuni au nevoie de editarea de linii locale, iar multe dintre acestea
nu. În modul implicit, PuTTY va încerca în mod automat s ˘a deduc ˘a dac ˘a editarea liniei
locale este sau nu adecvat ˘a pentru sesiunea în care se lucreaz ˘a. Dac ˘a se descoper ˘a faptul

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 54
c˘a decizia este incorect ˘a, se poate utiliza aceast ˘a op¸ tiune de configurare pentru a ignora
alegerea acesteia.
Multe terminale compatibile cu VT100 suport ˘a imprimarea sub controlul serverului de
la distan¸ t ˘a. PuTTY accept ˘a ¸ si aceast ˘a caracteristic ˘a, dar este dezactivat ˘a implicit. Pentru a
activa imprimarea controlat ˘a la distan¸ t ˘a, se alege o imprimant ˘a din caseta vertical ˘a. Acest
lucru ar trebui s ˘a permit ˘a selectarea tuturor imprimantelor care sunt instalate de c ˘atre
utilizator. Alternativ, se poate introduce numele unei imprimante din re¸ tea, chiar dac ˘a nu
s-a instalat deja un driver pentru aceasta pe propria ma¸ sin ˘a.
Când serverul de la distan¸ t ˘a încearc ˘a s˘a imprime anumite date, PuTTY va trimite
aceste date c ˘atre imprimant ˘a, încercând s ˘a le formateze. Întrucât PuTTY trimite date c ˘atre
imprimant ˘a, nu poate oferi op¸ tiuni cum ar fi portret versus peisaj, calitatea imprim ˘arii sau
selec¸ tia de hârtie. Toate aceste lucruri se vor face prin driverul imprimantei.
Unele terminale consider ˘a c˘a tasta backspace ar trebui s ˘a trimit ˘a acelea¸ si informa¸ tii
de server la server ca ¸ si Control-H (cod ASCII 8). Alte terminale cred c ˘a tasta backspace
ar trebui s ˘a trimit ˘a codul ASCII 127, astfel încât s ˘a poat ˘a fi distins de Control-H. Dac ˘a
conectarea se face prin SSH, PuTTY afi¸ seaz ˘a în mod implicit serverul valoarea acestei
op¸ tiuni. În mod similar, dac ˘a conectarea se face la un sistem Unix.
Modul de utilizare al tastaturii este o modalitate prin care serverul poate schimba
comportamentul tastaturii numerice. În modul normal, tastatura se comport ˘a ca o tastatur ˘a
Windows obi¸ snuit ˘a: cu NumLock activat ˘a, tastele numerice genereaz ˘a numere ¸ si cu
NumLock o ac¸ tioneaz ˘a ca tastele s ˘age¸ ti ¸ si Home, End ¸ si a¸ sa mai departe. În modul
aplica¸ tie, toate tastele tastaturii trimit secven¸ te de control speciale, inclusiv Num Lock.
Modul tastaturii aplica¸ tiei poate fi pornit ¸ si oprit de server, în func¸ tie de aplica¸ tie.
O eroare obi¸ snuit ˘a a utilizatorului într-o sesiune de terminale este de a rula accidental
comanda Unix cat pe un tip de fi¸ sier necorespunz ˘ator, cum ar fi un fi¸ sier executabil, imagine
sau fi¸ sier ZIP. Acest lucru produce un flux imens de caractere non-text trimise la terminal.
Pentru a încerca evitarea, PuTTY include o func¸ tie de gestionare a supraînc ˘arc˘arii. În
configura¸ tia implicit ˘a, primirea a mai mult de cinci caractere într-o perioad ˘a de dou ˘a
secunde va determina activarea func¸ tiei de supraînc ˘arcare. Modul de supraînc ˘arcare a
butoanelor este întotdeauna dezactivat prin orice ap ˘asare de tast ˘a din terminal.
PuTTY permite serverului s ˘a trimit ˘a coduri de control care s ˘a permit ˘a preluarea mouse-
ului ¸ si utilizarea acestuia în alte scopuri decât copierea ¸ si lipirea. Aplica¸ tiile care utilizeaz ˘a
aceast ˘a func¸ tie includ leg ˘aturile browserului de tip text, versiunea 4 a editorului de ¸ stiri
Usenet ¸ si managerul de fi¸ siere mc (Midnight Commander). Despre mc o s ˘a fie destinat ˘a o
sec¸ tiune ulterioar ˘a în care o s ˘a se eviden¸ tieze mecanismele de folosire ale acestuia.

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 55
De asemenea, PuTTY poate furniza op¸ tional serviciul xterm care permite aplica¸ tiilor
serverului s ˘a afle titlul ferestrei locale. Aceast ˘a caracteristic ˘a este dezactivat ˘a în mod
prestabilit, îns ˘a se poate activa dac ˘a este nevoie de ea. Aceast ˘a caracteristic ˘a reprezint ˘a un
pericol poten¸ tial de securitate. Dac ˘a o aplica¸ tie r ˘au-inten¸ tionat ˘a poate scrie date c ˘atre
terminal, acesta poate modifica titlul. Acest lucru permite unui atacator s ˘a aplice taste
false ¸ si poate manevra aplica¸ tiile de pe server s ˘a fac ˘a lucruri care nu sunt dorite.
Caseta de editare Titlu fereastr ˘a permite setarea titlului ferestrei PuTTY . Implicit, titlul
ferestrei va con¸ tine numele gazdei urmat de PuTTY . PuTTY permite serverului s ˘a trimit ˘a
secven¸ te de control xterm care modific ˘a titlul ferestrei la mijlocul sesiunii.
Pe lâng ˘a titlul ferestrei, exist ˘a ¸ si o secven¸ t ˘a xterm pentru a modifica titlul pictogramei
ferestrei. Acest lucru are sens într-un sistem de ferestre în care fereastra devine o
pictogram ˘a atunci când este redus ˘a la minimum. În mod prestabilit, PuTTY utilizeaz ˘a
numai titlul ferestrei furnizate de server ¸ si ignor ˘a în întregime titlul pictogramei.
În timpul unei sesiuni interactive, PuTTY prime¸ ste un flux de octe¸ ti de 8 bi¸ ti de la
server ¸ si pentru a afi¸ sa pe ecran trebuie s ˘a ¸ stie ce set de caractere trebuie s ˘a le interpreteze.
În mod similar, PuTTY trebuie s ˘a ¸ stie cum s ˘a traduc ˘a ap˘as˘arile de la tastatur ˘a în codificarea
pe care serverul o a¸ steapt ˘a. Implicit, PuTTY va utiliza codificarea UTF-8 a Unicode, care
poate reprezenta aproape orice caracter. Datele provenite de la server sunt interpretate ca
UTF-8, iar intr ˘arile de taste sunt trimise codate UTF-8. Aceasta este ceea ce majoritatea
distribu¸ tiilor moderne ale Linux se vor a¸ stepta în mod implicit.
Când serverul trimite o secven¸ t ˘a de control care indic ˘a faptul c ˘a un text ar trebui s ˘a fie
afi¸ sat cu caractere aldine, PuTTY poate gestiona acest lucru în mai multe moduri. În mod
implicit, caracterele aldine sunt indicate prin culoare, astfel încât textul este afi¸ sat în gri
deschis ¸ si textul îngro¸ sat este afi¸ sat în alb str ˘alucitor (¸ si în mod similar ¸ si în alte culori).
Unele routere de re¸ tea ¸ si firewall-uri trebuie s ˘a ¸ tin˘a eviden¸ ta tuturor conexiunilor prin
intermediul lor. De obicei, aceste firewall-uri vor presupune c ˘a o conexiune este c ˘azut˘a
dac˘a datele nu sunt transferate în ambele direc¸ tii dup ˘a un anumit interval de timp. Acest
lucru poate cauza ca sesiunile PuTTY s ˘a fie închise în mod nea¸ steptat de c ˘atre mecanismul
de sus¸ tinere a protec¸ tiei dac ˘a traficul nu este v ˘azut în sesiune pentru o perioad ˘a de timp.
Op¸ tiunea keepalive permite configurarea PuTTY pentru a trimite date prin sesiune la
intervale regulate, într-un mod care s ˘a nu perturbe sesiunea terminal ˘a real ˘a. Dac ˘a se
observ ˘a c˘a firewall-ul taie conexiunile inactive, se poate încerca introducerea unei valori
diferite de zero în acest câmp. Valoarea este m ˘asurat ˘a în secunde. Op¸ tiunea keepalive nu
este întotdeauna de ajutor. Dar dac ˘a re¸ teaua dintre utilizator ¸ si server sufer ˘a pauze în
conectivitate, atunci p ˘astrarea activ ˘a poate face lucrurile s ˘a se înr ˘aut˘a¸ teasc ˘a.

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 56
Dac˘a o sesiune este inactiv ˘a ¸ si conectivitatea este temporar pierdut ˘a între punctele
finale, dar conectivitatea este restabilit ˘a înainte ca fiecare parte s ˘a încerce s ˘a trimit ˘a ceva,
atunci nu va exista nicio problem ˘a – niciun punct final nu va observa c ˘a ceva este în
neregul ˘a.
Cu toate acestea, dac ˘a o parte trimite ceva în timpul pauzei, va încerca în mod repetat
s˘a reexpedieze ¸ si, eventual, renun¸ t ˘a ¸ si abandoneaz ˘a conexiunea. Atunci când se restabile¸ ste
conectivitatea, cealalt ˘a parte va constata c ˘a prima parte nu crede c ˘a exist ˘a o conexiune
deschis ˘a.
Protocolul Internet permite utilizatorului s ˘a selecteze între protocoalele de internet
vechi ¸ si noi ¸ si schemele de adresare (IPv4 ¸ si IPv6). Protocolul selectat va fi utilizat pentru
cele mai multe conexiuni de re¸ tea (inclusiv conexiuni la proxy-uri).
Remote host implic ˘a munca unui utilizator de configurare a un port SSH de
redirec¸ tionare într-o singur ˘a sesiune PuTTY , astfel încât conexiunile la un port arbitrar s ˘a
fie redirec¸ tionate c ˘atre portul SSH al unui al doilea aparat.
În modul normal de utilizare, al doilea aparat PuTTY va accesa cache-ul cheie gazd ˘a
sub numele de gazd ˘a ¸ si portul la care este conectat de fapt. Cu toate acestea, folosind
op¸ tiunea logic ˘a nume gazd ˘a, se poate configura al doilea aparat PuTTY pentru a arhiva
cheia gazd ˘a.
Dac˘a un utilizator a¸ steapt ˘a folosirea aceluia¸ si num ˘ar de port local pentru redirec¸ tionarea
porturilor c ˘atre o mul¸ time de servere diferite, probabil c ˘a nu se dore¸ ste ca o cheie gazd ˘a a
unui anumit server s ˘a fie stocat ˘a sub acel num ˘ar de port local.
Dac˘a se introduce doar un nume gazd ˘a pentru aceast ˘a op¸ tiune, PuTTY va memora
cache-ul cheie SSH sub portul SSH implicit pentru acea gazd ˘a, indiferent de portul la s-a
conectat utilizatorul cu adev ˘arat. Pentru a suprascrie acest lucru, se poate ad ˘auga un num ˘ar
de port la numele gazdei logice, separat printr-un colon.
Dac˘a se furnizeaz ˘a un nume de gazd ˘a utilizând aceast ˘a op¸ tiune, este afi¸ sat ¸ si în alte
loca¸ tii care con¸ tin numele gazdei la distan¸ t ˘a, cum ar fi titlul ferestrei implicite ¸ si promptul
implicit pentru parola SSH. Acest lucru reflect ˘a faptul c ˘a acesta este gazda cu care se
conecteaz ˘a utilizatorul cu adev ˘arat, ceea ce este mai important decât mijloacele pe care un
utilizator le folose¸ ste pentru a contacta acea gazd ˘a.
Majoritatea serverelor la care un utilizator se poate conecta cu PuTTY sunt proiectate
s˘a fie conectate la o mul¸ time de tipuri diferite de terminale. Pentru a trimite secven¸ tele de
control potrivite fiec ˘aruia, serverul va trebui s ˘a ¸ stie cu ce tip de terminal are de-a face.
Prin urmare, fiecare dintre protocoalele SSH, Telnet ¸ si Rlogin permite ca un ¸ sir de text
s˘a fie trimis pe conexiunea care descrie terminalul. Pe un server Unix, aceasta selecteaz ˘a o

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 57
intrare din baza de date termcap sau terminfo care spune aplica¸ tiilor ce secven¸ te de control
trebuie trimise la terminal ¸ si ce secven¸ te de caractere se a¸ steapt ˘a s˘a genereze tastatura.
În urma celor eviden¸ tiate anterior, PuTTY dovede¸ ste o complexitate ¸ si siguran¸ ta care
o confer ˘a utilizatorului. Acest software vine cu o serie de caracteristici pe care utilizatorul
poate s ˘a le manipuleze conform cerin¸ telor sale.
3.1.1 PuTTY Tips and Tricks
PuTTY este cel mai bun client SSH pentru Windows. Este nevoie doar de executabilul
putty.exe pentru a intra în software ¸ si nu trebuie instalat altceva. Pe lâng ˘a asta, acest utilitar
este u¸ sor de manevrat deoarece are o interfa¸ t ˘a prietenoas ˘a. În cele ce urmeaz ˘a o s ˘a fie
eviden¸ tiate câteva sfaturi utile practice, care s ˘a pun ˘a în valoare toate no¸ tiuniile eviden¸ tiate
în sec¸ tiunea anterioar ˘a despre PuTTY .
Când se schimb ˘a un computer vechi cu un computer nou, PuTTY permite transferul
de sesiune de la unul la altul foarte simplu. Odat ˘a ce s-au transferat aceste sesiuni PuTTY ,
se va executa “putty -cleanup“ din linia de comand ˘a ¸ si procesul în sine a rezolvat toate
probleme de sincronizare.
Dup˘a executarea comenzii de cleanup se va afi¸ sa un mesaj de avertizare la care se va
r˘aspunde cu Da pentru a ¸ sterge toate fi¸ sierele de sesiune PuTTY ¸ si aleatoare din registrul
Windows. Acesta este un proces mai bun pentru a ¸ sterge toate sesiunile salvate PuTTY din
registrul Windows, în loc de ¸ stergerea una câte una din lista de sesiuni PuTTY .
Schimbarea dimensiunii fontului automat când se redimensioneaz ˘a fereastra PuTTY
se face prin lansarea PuTTY !Selecatare sesiune !Click pe Înc ˘arcare. Din meniul din
stânga se va face click pe Fereastr ˘a!Selectare, Modifica¸ ti dimensiunea fontului din
sec¸ tiune. Când dimensiunea ferestrei este redimensionat ˘a, dup ˘a cum se arat ˘a mai jos!
Click pe Deschide în partea de jos a acestei ferestre pentru a începe sesiunea.
Dup˘a modificarea de mai sus, se va porni sesiunea PuTTY SSH ¸ si se va autentifica
din nou. Se va realiza comanda de top Unix ¸ si se va încerca redimensionarea ferestrei.
Dup˘a cum se ¸ stie aceast ˘a op¸ tiune nu se realizeaz ˘a automat f ˘ar˘a a o realiza manual, cum s-a
eviden¸ tiat anterior.
Schimbarea titlul ferestrei sesiunii PuTTY SSH ca implic ˘a, implicit, software-ul
PuTTY afi¸ seaz ˘a “username hostname: “ în titlul ferestrei PuTTY dup ˘a ce conectare. Se
poate modifica acest titlu prin lansarea PuTTY !Selectare sesiune!Click pe Înc ˘arcare.
Din meniul din stânga se va face click pe Fereastr ˘a!Comportament. În panoul din

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 58
dreapta, în fereastra Titlu fereastr ˘a se va introduce titlul ferestrelor dorite.
Istoricul evenimentelor PuTTY este accesibil din cadrul ferestrei titlul PuTTY , care va
afi¸ sa meniul PuTTY ¸ si care va avea op¸ tiunea de meniu Event Log, care va afi¸ sa fereastra
de jurnalizare a evenimentelor PuTTY . Acest lucru va fi foarte util pentru depanarea
problemelor de sesiune PuTTY SSH.
Activarea func¸ tiei de copiere /inserare RTF în software-ul PuTTY se realizeaz ˘a prin
lansarea terminalul PuTTY !Selectare sesiune !Click pe Înc ˘arcare. Din meniul din
stânga se va face click pe Window !Selectare. În panoul din partea dreapt ˘a, se va bifa
caseta de selectare unde se afi¸ seaz ˘a “Lipi¸ ti în clipboard în RTF, precum ¸ si în text simplu“.
De cele mai multe ori, un utilizator dore¸ ste s ˘a aib ˘a Sesiunea PuTTY SSH mereu sus
de tot în terminal. Acest lucru se poate realiza doar prin lansarea terminalul PuTTY !
Selectare sesiune!Click pe Înc ˘arcare. Din meniul din stânga se va face click pe Fereastr ˘a
!Comportament. În panoul din partea dreapt ˘a, se va face click pe caseta de selectare unde
scrie “Asigura¸ ti-v ˘a c˘a fereastra este întotdeauna în partea de sus“.
Clientul PuTTY se poate lansa în fullscreen dac ˘a sunt urma¸ ti urm ˘atorii pa¸ si necesari
configur ˘arii manuale asociate terminalului. Se va lansa PuTTY !Selectare sesiune !
Click pe înc ˘arcare. Din meniul din stânga se va face click pe Fereastr ˘a!Comportament.
În panoul din partea dreapt ˘a, se va face click pe caseta de selectare unde scrie “Ecran
complet pe Alt Enter“.
De asemenea, utilizatorul de cele mai multe ori dore¸ ste lansarea fereastrei PuTTY
maximizat ˘a implicit deoarece în mod automat sesiunea PuTTY ruleaz ˘a în dimensiunea
normal ˘a a ferestrei. Acest lucru se va realiza prin crearea unei noi comenzi rapide pentru
ferestra PuTTY în cadrul c ˘areia se va face click dreapta ¸ si se va selecta op¸ tiunea de meniu
Properties. Apoi se va face click pe op¸ tiunea de list ˘a Executare ¸ si se va selecta
Maximizare.
Mutarea sesiuniilor PuTTY c ˘atre un alt computer implic ˘a stocarea tuturor
informa¸ tiilor de sesiune din registrul Windows. Acest mecanism implic ˘a transferul
fi¸ sierului putty-registry.reg de la surs ˘a la ma¸ sina de destina¸ tie. În ma¸ sina de destina¸ tie, se
va importa registrul de sesiuni PuTTY SSH, se va face click dreapta pe file-registry.reg ¸ si
click pe Merge. Aceasta va transfera toate informa¸ tiile din sesiunea PuTTY de la un
sistem Windows la altul.

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 59
3.2 SSH – Secure Shell
Autentificarea cheilor publice este un mijloc alternativ de identificare a unui server de
conectare, în loc s ˘a se introduc ˘a o parol ˘a. Este mai sigur ¸ si mai flexibil, dar este mai dificil
de configurat.
Prin acest mecanism din spate se poate genera o pereche de chei, format ˘a dintr-o cheie
public ˘a ¸ si o cheie privat ˘a. Cheia privat ˘a poate genera semn ˘aturi. O semn ˘atur˘a creat ˘a
folosind cheia privat ˘a nu poate fi falsificat ˘a de nimeni care nu are acea cheie. Dar oricine
are cheia public ˘a poate verifica dac ˘a o anumit ˘a semn ˘atur˘a este autentic ˘a. Protocolul SSH
permite rularea mai multor canale de date pe aceea¸ si conexiune SSH, astfel încât un
utilizator se poate conecta doar o singur ˘a dat ˘a ¸ si apoi poate avea parte de mai multe
ferestre terminale deschise.
Fiecare instan¸ t ˘a a lui PuTTY poate rula în continuare o sesiune de terminal, dar
folosind comenzile din aceast ˘a caset ˘a, se poate configura PuTTY pentru a verifica dac ˘a o
alt˘a instan¸ t ˘a din ea îns ˘a¸ si s-a conectat deja la gazda ¸ tint ˘a.
În momentul în care serverul cere demonstrarea autenticit ˘a¸ tii utilizatorului, PuTTY
poate genera o semn ˘atur˘a utilizând cheia privat ˘a. Serverul poate verifica aceast ˘a
semn ˘atur˘a deoarece are cheia public ˘a a utilizatorului ¸ si poate permite conectarea sau nu.
Exist ˘a o problem ˘a în acest sens: dac ˘a cheia privat ˘a este stocat ˘a neprotejat ˘a pe
computer, atunci oricine ob¸ tine acces la aceasta va putea genera semn ˘aturi. Din acest
motiv, cheia privat ˘a este, de obicei, criptat ˘a atunci când este stocat ˘a pe ma¸ sina local ˘a,
utilizând o expresie de acces la alegere. Pentru a genera o semn ˘atur˘a, PuTTY trebuie s ˘a
decripte cheia.
Acest lucru poate face autentificarea cu chei publice mai pu¸ tin convenabil ˘a decât
autentificarea prin parol ˘a: de fiecare dat ˘a când un utilizator se conecteaz ˘a la un server, în
loc s ˘a tasteze o parol ˘a scurt ˘a, trebuie s ˘a introduc ˘a o expresie de acces mai lung ˘a. O solu¸ tie
la acest lucru este utilizarea unui agent de autentificare, un program separat care de¸ tine
chei private decriptate ¸ si genereaz ˘a semn ˘aturi la cerere.
SSH mai este cunoscut ¸ si ca Secure Socket Shell, un protocol de re¸ tea care ofer ˘a
administratorilor o modalitate sigur ˘a de a accesa un computer la distan¸ t ˘a. SSH se refer ˘a,
de asemenea, la suita de utilit ˘a¸ ti care implementeaz ˘a protocolul. Secure Shell ofer ˘a
autentificare puternic ˘a ¸ si comunica¸ tii securizate de date criptate între dou ˘a computere care
se conecteaz ˘a într-o re¸ tea nesigur ˘a, cum ar fi Internetul. SSH este utilizat pe scar ˘a larg ˘a de
c˘atre administratorii de re¸ tea pentru gestionarea sistemelor ¸ si a aplica¸ tiilor de la distan¸ t ˘a,

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 60
permi¸ tându-le s ˘a se conecteze la alt computer printr-o re¸ tea, s ˘a execute comenzi ¸ si s ˘a mute
fi¸ siere de la un computer la altul.
De asemenea, SSH se poate referi atât la protocolul de re¸ tea criptografic, cât ¸ si la suita
de utilitare care implementeaz ˘a acel protocol. SSH utilizeaz ˘a modelul client-server,
conectând o aplica¸ tie client corespondent securizat, sfâr¸ situl la care este afi¸ sat ˘a sesiunea,
cu un server SSH, sfâr¸ situl la care ruleaz ˘a sesiunea.
În afar ˘a de Microsoft Windows, software-ul SSH este inclus în mod implicit în
majoritatea sistemelor de operare. SSH sprijin ˘a, de asemenea, tunelul, redirec¸ tionarea
porturilor TCP arbitrare ¸ si a conexiunilor X11, în timp ce transferul de fi¸ siere poate fi
realizat utilizând protocoalele transferate securizat de transfer de fi¸ siere sau securizate
(SCP). Un server SSH, în mod implicit, ascult ˘a pe portul standard TCP 22.
Suita SSH cuprinde trei utilitare – slogin, ssh ¸ si scp – care sunt versiuni securizate ale
utilitarelor UNIX anterioare nesigure, rlogin, rsh ¸ si rcp. SSH utilizeaz ˘a criptografia cu
chei publice pentru a autentifica computerul la distan¸ t ˘a ¸ si pentru a permite computerului la
distan¸ t ˘a s˘a autentifice utilizatorul, dac ˘a este necesar.
În contextul version ˘arii SSH, de-a lungul timpului, în SSH-1 s-au g ˘asit diferite bug-uri
¸ si pentru a ameliora oarecum aceast ˘a situa¸ tie s-a conturat un nou set de protocoale Secure
Shell numit SSH-2 care a fost adoptat ca standard în 2006. Nu este compatibil cu SSH-
1 ¸ si utilizeaz ˘a un schimb de chei Di e-Hellman ¸ si un control mai puternic al integrit ˘a¸ tii
care utilizeaz ˘a coduri de autentificare a mesajelor pentru a îmbun ˘at˘a¸ ti securitatea. Clien¸ tii
¸ si serverele SSH pot utiliza o serie de metode de criptare, cele mai utilizate pe scar ˘a larg ˘a
fiind AES ¸ si Blowfish.
În realitate, cea mai mare amenin¸ tare la adresa SSH este gestionarea slab ˘a a cheilor.
F˘ar˘a crearea corect ˘a, rota¸ tia ¸ si eliminarea cheilor SSH, organiza¸ tiile î¸ si pot pierde controlul
asupra accesului la resursele, mai ales atunci când se utilizeaz ˘a SSH în procese automate
de aplica¸ tie la aplica¸ tie.
În acest sens, în cele ce urmeaz ˘a o s ˘a fie descri¸ si pa¸ sii urma¸ ti în cazul unui tunel SSH
din cadrul PuTTY . Primul pas în acest demers implic ˘a salvarea serverului de gateway SSH
dup˘a cum se eviden¸ tiaz ˘a în imaginea urm ˘atoare.
Pasul urm ˘ator care implic ˘a configurarea tunelului se realizeaz ˘a printr-un click pe
Conexiune >SSH>Tuneluri. Se va introduce portul pe care se dore¸ ste conectarea local ˘a la
Port surs ˘a. Apoi, furniza¸ ti adresa destina¸ tie (serverul care este disponibil de la gateway-ul
SSH, dar nu de la aparatul local) ca Destina¸ tie, dup ˘a cum se arat ˘a în imaginea urm ˘atoare:
Dup˘a ce s-a ajuns la imaginea anterioar ˘a, se va face click pe Ad ˘augare ¸ si sesiunea se va
re¸ tine. Ultimul pas implic ˘a ac¸ tionarea butonului Deschide¸ ti pentru conectarea la gateway.

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 61
Figura 3.3: TUNEL PUTTY SSH
3.3 MC – Midnight Commander
Designul Midnight Commander se bazeaz ˘a pe un concept comun de manager de
fi¸ siere care înglobeaz ˘a panouri de director dual în care sunt afi¸ sate simultan listele a dou ˘a
directoare. Ideea este c ˘a fi¸ sierele sunt mutate sau copiate din directorul afi¸ sat într-un
singur panou la directorul afi¸ sat în cel ˘alalt.
Figura 3.4: INTERFA¸ T ˘A MIDNIGHT COMMANDER

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 62
Ecranul eviden¸ tiat de Midnight Commander, anterior, este sec¸ tionat astfel:
Por¸ tiunea central ˘a a ecranului este dominat ˘a de dou ˘a panouri mari de director;
Linia de jos a afi¸ sajului con¸ tine taste de comenzi rapide (F1-F10) având cele mai
utilizate func¸ tii corespunz ˘atoare;
Linia de sus a afi¸ sajului con¸ tine un set de meniuri derulante care pot fi activate prin
ap˘asarea tastei F9;
Deasupra etichetelor tastelor func¸ tionale exist ˘a un prompt pentru shell. O comand ˘a
deosebit de util ˘a este cd urmat ˘a de un nume de cale director. Aceasta va schimba
directorul afi¸ sat în panoul directorului curent;
În partea de jos a panoului directorului ¸ si deasupra liniei de comand ˘a se afl ˘a linia de
mini-status. Aceast ˘a zon ˘a este utilizat ˘a pentru a afi¸ sa informa¸ tii suplimentare despre
elementul selectat în prezent, cum ar fi obiectivele leg ˘aturilor simbolice.
Prin defini¸ tie, GNU Midnight Commander este un manager de fi¸ siere vizual, licen¸ tiat
sub GNU General Public License ¸ si prin urmare se calific ˘a drept software free. Este o
aplica¸ tie bogat ˘a în moduri de text pe ecran complet, care permite copierea, mutarea sau
¸ stergerea fi¸ sierelor sau directoarelor de fi¸ siere, c ˘autarea fi¸ sierelor ¸ si executarea comenzii în
subshell. Vizualizatorul ¸ si editorul intern sunt incluse.
Instalarea MC în cadrul sistemului de operare Linux se face prin urm ˘atoarea linie de
comand ˘a: sudo apt-get install mc.
Configurarea Midnight Commander
Pentru configurarea MC, utilizatorul trebuie s ˘a acceseze din meniul Op¸ tiuni,
Configurare. Pentru a marca sau a deselecta casetele, se va utiliza bara de spa¸ tiu. Pe lâng ˘a
acestea, trebuie marcate ¸ si meniurile drop-down deoarece by default acestea eviden¸ tiaz ˘a
numele meniului.
O alt ˘a op¸ tiune de meniu este deselectarea “afi¸ sarea fi¸ sierelor ascunse“, în cazul în care
sunt foarte multe ¸ si utilizatorul dore¸ ste s ˘a le vizualize doar pe cele vizibile.
Pentru op¸ tiunea “pause after run“ se va bifa “întotdeauna“ pentru a permite citirea
mesajelor de ie¸ sire sau de eroare în terminal dup ˘a executarea unei comenzi.
În meniul din dreapta, în cadrul op¸ tiunii “Alte op¸ tiuni“ se vor marca toate cu excep¸ tia
“meniurilor automate“ ¸ si “¸ stergerea în siguran¸ t ˘a“. Meniurile automate vor deschide în

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 63
mod iritant meniul F2 la lansarea mc. Mi¸ scarea tip Lynx este una dintre cele mai bune
op¸ tiuni ¸ si permite introducerea de directoare cu tastele s ˘ageat ˘a înainte ¸ si înapoi, de
oriunde se afl ˘a un utilizator în director.
Interfa¸ ta
Midnight Commander este o aplica¸ tie consol ˘a cu o interfa¸ t ˘a de utilizator pentru text.
Selectarea fi¸ sierelor se face folosind tastele s ˘ageat ˘a, tasta de inserare este utilizat ˘a pentru a
selecta fi¸ siere, iar tastele func¸ tionale efectueaz ˘a opera¸ tii cum ar fi redenumirea, editarea ¸ si
copierea fi¸ sierelor. Versiunile ulterioare ale comenzii Midnight Commander au în plus
suport pentru mouse. Astfel de versiuni cunosc emulatorii GPM ¸ si X terminal (cum ar fi
GNOME Terminal sau xterm) care suport ˘a raportarea mouse-ului. Când ruleaz ˘a în
interiorul unui terminal X, aceste versiuni pot actualiza numele ferestrei în care ruleaz ˘a
Midnight Commander.
Func¸ tiile Midnight Commander includ posibilitatea de a vizualiza con¸ tinutul
pachetelor de pachete RPM, de a lucra cu formate comune de arhiv ˘a ca ¸ si cum ar fi pur ¸ si
simplu un alt director ¸ si de a func¸ tiona ca un client FTP sau FISH. Comanda Midnight
include, de asemenea, un editor numit mcedit, care poate fi executat ca un program
independent sau de la Midnight Commander folosind tasta F4. Func¸ tiile lui mcedit includ
eviden¸ tierea sintaxelor pentru multe limbi, macrocomenzi, fragmente de cod, integrare
simpl ˘a cu instrumente externe, indentare automat ˘a, suport pentru mouse, un clipboard ¸ si
abilitatea de a lucra în ambele moduri ASCII ¸ si hex.
Midnight Commander poate redenumi, de asemenea, grupuri de fi¸ siere, spre deosebire
de alte software de fi¸ siere care pot redenumi doar câte un fi¸ sier la un moment dat. Acest
lucru este convenabil pentru manipularea colec¸ tiilor mari de fi¸ siere. Commander poate
muta, de asemenea, fi¸ sierele într-un director diferit, în acela¸ si timp cu redenumirea
acestora. Acesta permite utilizatorului s ˘a specifice numele de fi¸ sier original ¸ si rezultatul
folosind caractere de tip wildcard. Acest lucru face ca puterea expresiilor regulate s ˘a fie
disponibil ˘a pentru redenumirea fi¸ sierelor, cu o interfa¸ t ˘a de utilizare convenabil ˘a. Toate
aceste func¸ tii sunt disponibile prin selectarea op¸ tiunii File >Rename /Move.
Schimbarea formularului de afi¸ sare implic ˘a listarea directoarelor care pot fi afi¸ sate în
mai multe formate diferite. Exist ˘a un format cu dou ˘a coloane, un format asem ˘an˘ator cu
ie¸ sirea lui ls -l ¸ si altele. Exist ˘a, de asemenea, un “mod de informare“ care va afi¸ sa informa¸ tii
detaliate privind sistemul de fi¸ siere în cel ˘alalt panou cu privire la elementul selectat din
panoul curent. Pentru a invoca acest mod, se va tasta Ctrl-x i. Pentru a readuce cel ˘alalt

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 64
panou la starea sa normal ˘a, se va tasta din nou Ctrl-x i.
Este adesea util ˘a selectarea unui director din panoul curent ¸ si con¸ tinutul acestuia s ˘a fie
afi¸ sat pe cel ˘alalt panou. De exemplu, când se mut ˘a fi¸ siere dintr-un director p ˘arinte într-un
subdirector. Pentru aceasta, se va selecta un director ¸ si se va tasta Alt-o. Pentru a for¸ ta
cel˘alalt panou s ˘a afi¸ seze acela¸ si director ca panoul curent, se va tasta Alt-i.
Utilizarea tastaturii ¸ si a mouse-ului
Fiind o aplica¸ tie bazat ˘a pe caractere, cu o mul¸ time de caracteristici, Midnight
Commander are o mul¸ time de comenzi de la tastatur ˘a, unele dintre ele fiind partajate cu
alte aplica¸ tii. Din fericire, Midnight Commander sprijin ˘a, de asemenea, intrarea
mouse-ului pe majoritatea emulatorilor de terminale (¸ si pe consola dac ˘a pachetul gpm este
instalat). Înv ˘a¸ tarea comenzilor tastaturii este necesar ˘a pentru a profita din plin de
caracteristicile programului.
O alt ˘a problem ˘a pe care un utilizator o poate întâmpina implic ˘a problemele de la
nivelul interferen¸ tei de la managerul de ferestre ¸ si de la emulatorul terminal propriu-zis.
Multe dintre tastele func¸ tionale ¸ si combina¸ tiile Alt-cheie pe care Midnight Commander le
utilizeaz ˘a sunt interceptate în alte scopuri de c ˘atre managerul de terminale ¸ si ferestre.
Pentru a rezolva aceast ˘a problem ˘a, Midnight Commander permite ca tasta Esc s ˘a
func¸ tioneze ca o cheie Meta. În cazurile în care o tast ˘a func¸ tional ˘a sau o combina¸ tie
Alt-cheie nu este disponibil ˘a din cauza interferen¸ telor din programe externe, se poate
utiliza în schimb tasta Esc. Aceea¸ si metod ˘a func¸ tioneaz ˘a ¸ si cu combina¸ tii dificile cu
Alt-cheie. Pentru a închide casetele de dialog din Midnight Commander, se apas ˘a de dou ˘a
ori tasta Esc.
Putem efectua multe opera¸ tii Midnight Commander folosind mouse-ul. Un element de
panou de director poate fi selectat prin click pe el ¸ si un director poate fi deschis prin dublu
click. De asemenea, etichetele tastelor de func¸ tii ¸ si elementele din bara de meniu pot fi
activate prin click pe ele. Ceea ce nu este atât de evident este c ˘a istoricul de directoare
poate fi accesat ¸ si utilizat.
În partea de sus a fiec ˘arui panou de directoare exist ˘a s˘age¸ ti mici. Exist ˘a, de asemenea,
o s˘ageat ˘a spre marginea din dreapta jos a liniei de comand ˘a care dezv ˘aluie istoricul liniei
de comand ˘a.

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 65
Navigarea ¸ si c ˘autarea
Înainte de a începe efectuarea de opera¸ tii cu fi¸ siere, un utilizator trebuie s ˘a dobândeasc ˘a
cuno¸ stin¸ te despre cum se utilizeaz ˘a panourile de directoare ¸ si navigarea în sistemul de
fi¸ siere.
La nivelul MC, exist ˘a dou ˘a panouri de directoare, panoul din stânga ¸ si panoul din
dreapta. În orice moment, unul din panouri este activ ¸ si se nume¸ ste panoul curent. Cel ˘alalt
panou este numit by default ca fiind cel ˘alalt panou conform documenta¸ tiei Midnight
Commander.
Panoul curent poate fi identificat de bara eviden¸ tiat ˘a în lista de directoare, care poate fi
mutat ˘a în sus ¸ si în jos cu ajutorul tastelor s ˘ageat ˘a, PgUp, PgDn etc. Orice fi¸ sier sau director
care este eviden¸ tiat se spune c ˘a este selectat.
Actualul panou de directoare se va schimba în directorul selectat. Eviden¸ tierea celui
mai important element din listare selecteaz ˘a directorul p ˘arinte. De asemenea, este posibil ˘a
schimbarea directoarelor direct pe linia de comand ˘a de sub panoul de directoare.
În cadrul ferestrei de c ˘autare se specific ˘a unde trebuie s ˘a înceap ˘a c˘autarea ¸ si o list ˘a de
directoare separate de coloane care trebuie ignorate pe timpul c ˘aut˘arii. Aceast ˘a
caracteristic ˘a este potrivit ˘a pentru c ˘autarea masiv ˘a dup ˘a un anumit cod surs ˘a sau fi¸ sier de
configurare pentru modele specifice de text.
Opera¸ tii de fi¸ siere ¸ si director
Fi¸ sierele ¸ si directoarele pot fi mutate, copiate, ¸ sterse ¸ si con¸ tinutul vizualizat cu u¸ surin¸ t ˘a
prin tastele F!lista posibil ˘a cu op¸ tiuni este mereu în cadrul MC jos.
Multe editoare externe care sunt speciale pentru diferite fi¸ siere nu pot fi accesate foarte
simplu pe platfoam ˘a ¸ si astfel, singura op¸ tiune comod ˘a care este la îndemâna utilizatorului
este editate de meniu cu adev ˘arat sigur ˘a prin intermediul meniului Editare.
În acest sens, Midnight Commander ofer ˘a un vizualizator de fi¸ siere care poate fi accesat
prin selectarea unui fi¸ sier ¸ si ap ˘asarea tastei F3.
Atunci când vizualizatorul de fi¸ siere este activ, etichetele tastelor func¸ tionale din partea
de jos a ecranului se modific ˘a pentru a dezv ˘alui caracteristicile spectatorilor.
Fi¸ sierele pot fi c ˘autate ¸ si vizualizatorul poate merge rapid în orice pozi¸ tie din fi¸ sier.
Cel mai important, fi¸ sierele pot fi vizualizate fie în ASCII (text obi¸ snuit), fie în
hexazecimal, pentru acele cazuri când avem nevoie de o vizualizare cu adev ˘arat detaliat ˘a.

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 66
Figura 3.5: OPERA¸ TII MIDNIGHT COMMANDER
Modulul “vizualizare rapid ˘a“ este benefic pentru a vizualiza fi¸ sierul selectate în prezent.
Acest lucru este foarte bun dac ˘a se navigheaz ˘a într-un director plin de fi¸ siere text ¸ si se
dore¸ ste vizualizarea rapid ˘a de fi¸ siere, deoarece de fiecare dat ˘a când este selectat un fi¸ sier
nou în panoul curent, este instantaneu afi¸ sat în cel ˘alalt. Pentru a porni modul de vizualizare
rapid ˘a, se va tasta Ctrl-x q. Odat ˘a ce utilizatorul se afl ˘a în modul de vizualizare rapid ˘a,
putem ap ˘asa pe Tab ¸ si focalizarea se schimb ˘a în cel ˘alalt panou în modul de vizualizare
rapid ˘a. Aceasta va schimba etichetele tastelor de func¸ tii la un subset al vizualizatorului de
fi¸ siere complet. Pentru a ie¸ si din modul de vizualizare rapid ˘a, ap ˘asa¸ ti pe Tab pentru a reveni
la panoul directorului ¸ si ap ˘asa¸ ti Alt-i.
Figura 3.6: EDITARE

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 67
Tasta F4 din cadrul Commander Midnight invoc ˘a un editor de text înc ˘arcat cu fi¸ sierul
selectat. Linia de comand ˘a în mc, ar trebui s ˘a execute orice este introdus în ea. Pentru a
ajunge la executarea comenzii mc în linia de comand ˘a, trebuie mai întâi ca utilizatorul s ˘a
fie autententificat ca root sau trebuie s ˘a se scrie în consol ˘a sudo su.
În timp ce totul r ˘amâne introdus în linia de comand ˘a, tastele s ˘ageat ˘a lateral se mi¸ sc ˘a
prin text ¸ si nu vor func¸ tiona pentru a naviga în panouri. Pentru a derula înainte ¸ si înapoi
prin istoricul comenzilor, se utilizeaz ˘a alt – p pentru precedentul alt-n pentru urm ˘atoarea
comand ˘a în locul tastelor s ˘age¸ ti sus ¸ si jos (ca în fereastra terminalului), deoarece mc le
folose¸ ste pentru navigare.
De cele mai multe ori dorim s ˘a oper ˘am pe mai multe fi¸ siere. Acest lucru poate fi realizat
prin etichetare. Când un fi¸ sier este etichetat, acesta este marcat pentru o opera¸ tie ulterioar ˘a,
cum ar fi copierea. Din acest motiv, se alege folosirea unui manager de fi¸ siere, cum ar fi
Midnight Commander. Atunci când unul sau mai multe fi¸ siere sunt etichetate, opera¸ tiile
fi¸ sierelor (cum ar fi copierea) sunt efectuate pe fi¸ sierele etichetate, iar selec¸ tia nu are efect.
Pentru a eticheta un fi¸ sier sau un director individual, se va ap ˘asa tasta Insert iar pentru
procedura invers ˘a se va ap ˘asa aceea¸ si tast ˘a Insert. Pentru a eticheta un grup de fi¸ siere sau
directoare în func¸ tie de criteriile de selec¸ tie, cum ar fi un model cu metacaractere, se va
ap˘asa tasta +.
Un utilizator atunci când dore¸ ste s ˘a creeze un director, trebuie s ˘a ¸ stie faptul c ˘a are nevoie
în prim ˘a faz ˘a de o loca¸ tie destinat ˘a în cadrul parti¸ tiei home destinat ˘a fiec ˘arui utilizator.
Acolo, utilizatorul va crea un director folosind tasta F7. De asemenea, pentru a eviden¸ tia
con¸ tinutul directorului utilizatorul trebuie doar s ˘a apese combina¸ tia Alt-o.
Pentru a copia un director sau un fi¸ sier din parti¸ tia local ˘a de utilizator home în cadrul
opt trebuie ca utilizatorul s ˘a selecteze directorul sau fi¸ sierul dorit ¸ si s ˘a ac¸ tioneze tasta F5.
Midnight Commander poate crea atât leg ˘aturi puternice, cât ¸ si simbolice. Acestea sunt
create folosind trei comenzi de tastatur ˘a care determin ˘a apari¸ tia unui dialog în care se pot
specifica detaliile leg ˘aturii, astfel: Ctrl-x l creeaz ˘a un link puternic, în directorul afi¸ sat în
panoul curent, Ctrl-x s creeaz ˘a o leg ˘atur˘a simbolic ˘a în directorul afi¸ sat în cel ˘alalt panou,
utilizând o cale de director absolut ˘a ¸ si Ctrl-x v creeaz ˘a o leg ˘atur˘a simbolic ˘a în directorul
afi¸ sat în cel ˘alalt panou, folosind o cale de director relativ ˘a.
Cele dou ˘a comenzi simbolice de leg ˘atur˘a sunt practic acelea¸ si. Ele difer ˘a numai prin
faptul c ˘a aceste c ˘ai sugerate în dialogul Leg ˘atur˘a simbolic ˘a sunt absolute sau relative.
Pentru a ¸ sterge fi¸ siere din cadrul parti¸ tiei locale se va ap ˘asa tasta F8. Implicit,
Midnight Commander solicit ˘a întotdeauna utilizatorului confirmarea înainte de a fi
executat ˘a ¸ stergerea.

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 68
Exist ˘a dou ˘a op¸ tiuni de meniu foarte importante, prima prin accesarea F9 – este pentru
accesarea opera¸ tiunilor, cum ar fi schimbarea permisiunilor sau a dreptului de proprietate,
a leg ˘aturilor ¸ si a simbolicii. ¸ si a doua op¸ tiune prin accesarea F2 care se ocup ˘a în cea mai
mare parte de zipping ¸ si extragerea fi¸ sierelor ¸ si subdirectoarelor, precum ¸ si de deschiderea
paginii manuale.
Permisiune de fi¸ siere
Fi¸ sierele ¸ si directoarele au permisiuni. Permisiunea va gestiona cine poate citi, scrie ¸ si
executa fi¸ sierele ¸ si directoarele. Comanda pentru a gestiona aceasta este chmod. Se poate,
de asemenea, vedea cum se utilizeaz ˘a chmod tastând man chmod în terminal.
Cu ajutorul Midnight Commander, trebuie doar ca utilizatorul s ˘a selecteze un fi¸ sier,
apoi se apas ˘a F9 >File >Chmod sau se va ap ˘asa Ctrl-x ¸ si c.
Accesarea con¸ tinutului arhivelor
Toate tipurile de arhive sunt accesibile cu mc. Fi¸ sierele individuale pot fi vizualizate ¸ si
extrase f ˘ar˘a a fi nevoie de despachetare sau instalare. Anumite tipuri de fi¸ siere de arhiv ˘a au
nevoie de alte pachete instalate pentru a c ˘auta în interior. Pentru a accesa .deb pe un sistem
bazat pe rpm, se va instala un pachet deb, care include dpkg. ¸ Si pentru a accesa fi¸ sierele
iso, este nevoie de pachetul cdrkit-isotools.
Pentru a reda o vizualizare general ˘a, se va ap ˘asa F3 direct pe fi¸ sier. În acest ecran, tastele
F au din nou func¸ tii diferite. Pentru a p ˘ar˘asi acest ecran, se va utiliza F10. De asemenea,
pentru a citi fi¸ sierele text cu se va ap ˘asa tasta F3. Acest lucru este foarte util pentru rpms,
unde se poate copia o bibliotec ˘a necesar ˘a, de exemplu, într-un pachet pe care nu se poate
instala din cauza unor probleme de conflict sau de dependen¸ t ˘a.
3.4 SUDO – Substitute User Do
Sudo (superuser do) este un utilitar pentru sistemele bazate pe UNIX ¸ si Linux care
ofer˘a o modalitate eficient ˘a de a acorda anumitor utilizatori permisiunea de a folosi
anumite comenzi de sistem la nivelul root al sistemului. Sudo înregistreaz ˘a, de asemenea,
toate comenzile ¸ si argumentele. O concep¸ tie gre¸ sit ˘a despre sudo este c ˘a este utilizat ˘a
exclusiv pentru a oferi permisiuni root unui utilizator obi¸ snuit. De fapt, comanda sudo

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 69
permite executarea unei comenzi ca orice utilizator, implicit fiind utilizatorul root.
Utilizatorii, probabil, iau în considerare faptul c ˘a pot rula întotdeauna comanda sudo.
Motivul pentru care acest lucru este c ˘a în timpul etapei de instalare este creat un utilizator
implicit, iar utilizatorul implicit din Ubuntu este întotdeauna configurat cu permisiuni sudo.
Este foarte important ca doar c⸠tiva oameni s ˘a aib ˘a acces la comanda sudo ¸ si ar trebui
s˘a fie administratorii de sistem. Orice alt utilizator ar trebui s ˘a primeasc ˘a doar permisiunile
necesare pentru a-¸ si îndeplini task-urile.
Sudo este singura comand ˘a cu care un utilizator îi va conduce pe to¸ ti deoarece aceast ˘a
comand ˘a implic ˘a un super utilizator. Ca ¸ si administrator de sistem Linux, sudo este una
dintre cele mai importante comenzi. Odat ˘a cu prefixarea sudo a oric ˘arei comenzi linux,
acesta va executa acea comand ˘a cu privilegii ridicate. Sunt necesare privilegii crescute
pentru a efectua anumite sarcini administrative.
Pentru a porni un server web de aplica¸ tie sau pentru a modifica un fi¸ sier de configurare
asociat unui software, un utilizator trebuie obligatoriu s ˘a aib ˘a acces la comanda sudo.
Ceea ce face sudo este incredibil de important ¸ si esen¸ tial pentru multe distribu¸ tii Linux.
Exist ˘a mul¸ ti care cred c ˘a sudo este cel mai bun mod de a realiza securitatea celor mai bune
practici pe Linux. Exist ˘a îns ˘a unii care se simt destul de opu¸ si. Indiferent de ce realiza¸ ti la
un moment dat pe un server , va veni un moment în care va fi necesar ˘a folosirea comenzii
sudo.
Deci, un demers important, de luat în calcul, la configurarea ini¸ tial ˘a este preg ˘atirea de
folosire a comenzii sudo.
În momentul de fa¸ t ˘a, cele mai multe versiuni de linux ofer ˘a posibilitatea de conectare
la sistem folosit un utilizator diferit de root.
Comanda sudo su folosit ˘a ¸ si în cadrul proiectului asigur ˘a utilizatorului curent
posibilitatea de conectare folosind la autentificare parola de administrator. Practic,
diferen¸ ta care implic ˘a folosirea su const ˘a în autentificarea cu parol ˘a de administrator nu cu
parola personal ˘a.
Utilizarea lui sudo, în forma sa cea mai de baz ˘a, este simpl ˘a. Dac ˘a, în calitate de
utilizator standard, se va executa doar comanda dpkg -i software.deb, utilizatorul va primi
o eroare care avertizeaz ˘a c˘a utilizatorul nu are permisiuni corespunz ˘atoare pentru a
executa comanda.
Acest lucru se datoreaz ˘a faptului c ˘a utilizatorii standard, în mod implicit, nu pot
instala aplica¸ tii pe o ma¸ sin ˘a Linux. Pentru a instala cu succes o aplica¸ tie pe o ma¸ sin ˘a
Linux trebuie s ˘a ave¸ ti privilegii de super-utilizator. Deci, pentru a schimba aceast ˘a
comand ˘a pentru a putea rula cu succes instalarea, ar trebui s ˘a emite¸ ti comanda sudo dpkg

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 70
-i software.deb.
Figura 3.7: SUDO SU
Un moment foarte important este configurarea. Trebuie luat în calcul faptul c ˘a dac ˘a se
va scrie ceva gre¸ sit în fi¸ sierul /etc/sudoers, instalarea nu mai func¸ tioneaz ˘a. Sudo este
foarte special în ceea ce prive¸ ste sintaxa în fi¸ sierul de configurare. Deci, trebuie verificat ˘a
întotdeauna configura¸ tia înainte de a salva fi¸ sierul. Singurul fi¸ sier de care un utilizator
trebuie s ˘a aib ˘a grij ˘a este, din fericire, doar sudoers. Acest fi¸ sier, dup ˘a cum se subîn¸ telege,
trebuie s ˘a aib ˘a prefixat ˘a comanda sudo pentru a fi vizualizat.
Pentru a face modific ˘ari în fi¸ sierul de configurare sudo, trebuie s ˘a fie utilizat ˘a o comand ˘a
specific ˘a – sudo visudo. Când se deschide acest fi¸ sier, se poate observa c ˘a fi¸ sierul sudoers
are o dimensiune destul de mic ˘a. Nu este cu adev ˘arat prea mult, dar ceea ce este pentru el
este cheia.
3.5 AMP – Alfresco Module Package
Modulele împachetate Alfresco sunt fi¸ siere zip care con¸ tin extensia specific ˘a ¸ si
sugestiv ˘a amp. Extensia trebuie s ˘a respecte un aspect prestabilit ¸ si s ˘a includ ˘a fi¸ siere
importante care descriu modulul care indic ˘a modalitatea recomandat ˘a de ambalare a

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 71
personaliz ˘arilor ¸ si extensiilor pentru implementare, unde aceste extensii depind de
biblioteci, deoarece astfel de deficien¸ te nu sunt înc ˘a suportate de jar. JAR este, în general,
tipul preferat de ambalare pentru extensiile în care nu exist ˘a dependen¸ te de biblioteci.
AMP-urile pot fi utilizate pentru pachete de ¸ sabloane personalizate, modele
personalizate, scripturi web, personaliz ˘ari UI ¸ si pot fi folosite pentru a implementa module
extinse la func¸ tionalitatea serviciilor de con¸ tinut Alfresco. Gestiunea înregistr ˘arilor este
un exemplu de aplica¸ tie care ofer ˘a o îmbun ˘at˘a¸ tire semnificativ ˘a a capabilit ˘a¸ tilor serviciilor
de con¸ tinut Alfresco ¸ si este distribuit ˘a prin intermediul fi¸ sierelor AMP.
Când un modul este instalat utilizând MMT, acesta este aplicat fi¸ sierului WAR relevant.
Serviciile de con¸ tinut Alfresco constau în mod obi¸ snuit din cel pu¸ tin dou ˘a fi¸ siere WAR:
alfresco.war pentru serverul de con¸ tinut ¸ si share.war pentru clientul web Share. Fi¸ sierul
modulului AMP este aplicat la WAR-ul corespunz ˘ator folosind MMT.
Module mai mari ¸ si mai complexe pot fi distribuite în dou ˘a fi¸ siere AMP, unul care se
aplic ˘a fi¸ sierului WAR ¸ si altul care se aplic ˘a fi¸ sierului Share WAR. Gestionarea
înregistr ˘arilor, de exemplu, este distribuit ˘a în acest mod.
De asemenea, AMP-urile pot fi considerate extensii instalabile la serviciile de con¸ tinut
Alfresco. Dup ˘a ce este ambalat într-un format de fi¸ sier AMP, o extensie poate fi aplicat ˘a
serviciilor de con¸ tinut Alfresco folosind instrumentul de gestionare a modulelor (MMT).
Exist ˘a dou ˘a directoare care con¸ tin fi¸ siere AMP, directorul Amps ¸ si directorul amps_share.
Modulele care prelungesc spa¸ tiul de stocare se afl ˘a în directorul Amp. Modulele care extind
nivelul de partajare sunt situate în directorul amps_share.
Pentru aplica¸ tia propriu-zis ˘a, am folosit dou ˘a amp-uri, unul share ¸ si unul repo care le-
am ad ˘augat în fi¸ sierele eviden¸ tiate anterior ¸ si le-am aplicat rulând bat din cadrul directorului
bin pentru aplicare amp-uri.
Acest format permite ca modulul s ˘a fie mai u¸ sor de folosit, de exemplu cu o
comunitate de dezvoltatori sau pentru expedierea c ˘atre clien¸ ti. În timpul dezvolt ˘arii,
formatele non-AMP sunt uneori folosite pentru a u¸ sura procesul de dezvoltare.
Avantajele utiliz ˘arii fi¸ sierelor AMP:
1. AMP-urile ofer ˘a o caracteristic ˘a a spa¸ tiului de nume care ajut ˘a la prevenirea
confrunt ˘arilor cu nume de fi¸ siere cu alte extensii;
2. Versiunea minim ˘a ¸ si maxim ˘a a serviciilor de con¸ tinut Alfresco necesare pentru ca
extensia s ˘a func¸ tioneze corect poate fi specificat ˘a în fi¸ sierul AMP;
3. În fi¸ sierul AMP pot fi declarate dependen¸ te de alte module;

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 72
Figura 3.8: CONTENT MODEL AMP
4. Fi¸ sierele AMP pot con¸ tine un num ˘ar de versiune a modulului;
5. Datele solicitate de extensie atunci când modulul este înc ˘arcat pot fi incluse în AMP;
6. Este posibil s ˘a executa¸ ti codul de ini¸ tiere atunci când AMP este instalat.
Când un fi¸ sier AMP urmeaz ˘a a fi implementat, acesta se aplic ˘a fi¸ sierului WAR ¸ tint ˘a
utilizând Instrumentul de gestionare a modulelor. Acesta este un mod convenabil de a
aplica un num ˘ar de fi¸ siere într-o varietate de directoare din structura directorului explodat
al WAR-ului ¸ tint ˘a. Când aplica¸ tia AMP este aplicat ˘a, map ˘arile implicite pot fi aplicate pe
hart˘a din structura modulului de directoare c ˘atre structura directorului WAR explodat. De
asemenea, pot fi aplicate map ˘ari personalizate. Implicit, directoarele modulului ¸ si
subdirectoarele acestora sunt mapate în fi¸ sierul WAR ¸ tint ˘a folosind Instrumentul de
gestionare a modulelor (MMT).
O cartografiere personalizat ˘a din structura directorului AMP în fi¸ sierul WAR este
uneori util ˘a, de exemplu dac ˘a se dore¸ ste utilizarea unui structuri de director module
non-standard sau dac ˘a se dore¸ ste maparea de fi¸ siere în loca¸ tii non-implicite în WAR.
Aceast ˘a cartografiere personalizat ˘a este realizat ˘a prin utilizarea fi¸ sierului
file-mapping.properties. Map ˘arile implicite sunt aplicate dac ˘a fi¸ sierul
file-mapping.properties nu este furnizat.
Este posibil s ˘a se controleze dac ˘a se aplic ˘a map ˘arile implicite care utilizeaz ˘a
proprietatea include.default. Proprietatea este setat ˘a la adev ˘arat˘a în mod implicit. Dac ˘a
este setat ˘a fals ˘a, map ˘arile implicite nu vor fi aplicate. Deoarece cartografiile personalizate
au întotdeauna o precizie fa¸ t ˘a de map ˘arile implicite, este posibil ˘a înc ˘arcarea valorilor
implicite ¸ si suprascrierea acestora pe o baz ˘a individual ˘a.

CAPITOLUL 3. INTEGRAREA APLICA¸ TIEI PE LINUX 73
Dac˘a în directorul surs ˘a nu exist ˘a fi¸ sierul AMP, atunci maparea va fi ignorat ˘a. Cu toate
acestea, directorul de destina¸ tie din fi¸ sierul WAR ¸ tint ˘a trebuie s ˘a existe sau o excep¸ tie de
rulare va fi crescut ˘a atunci când MMT încearc ˘a s˘a instaleze AMP.

CONCLUZII
Aplica¸ tia creat ˘a cu ajutorul platformei Alfresco are la baz ˘a ideea asociat ˘a cu omul ¸ si
metodele de colectare a informa¸ tiilor din sursa intern ˘a ¸ si extern ˘a ¸ si prelucrarea acestor
informa¸ tii în scopul facilit ˘arii procesului de luare a deciziilor.
Managementul de documente promite în momentul de fat ˘a numeroase facilit ˘a¸ ti
caracterizate prin mai multe dimensiuni, cum ar fi viteza, precizia ¸ si volumul crescut de
date, care permit luarea în considerare a mai multor alternative în procesul de luare a
deciziilor.
În acest sens, în cadrul aplica¸ tiei se planific ˘a o atingere de targheturi stabilind strategii
¸ si obiective. Utilizatorii din cadrul laboratoarelor INCESA organizeaz ˘a sarcinile necesare
pentru planul opera¸ tional, stabilesc aceste sarcini în grupuri omogene ¸ si atribuie delegarea
autorit ˘a¸ tilor. Acestea controleaz ˘a standardele de performan¸ t ˘a ¸ si evit ˘a abaterea de la
standard.
Datele vehiculate în aplica¸ tie trebuie distinse de informa¸ tii, iar distinc¸ tia este clar ˘a ¸ si
important ˘a pentru scopul prezent. Datele sunt fapte ¸ si cifre care nu sunt utilizate în prezent
în procesul de luare a deciziilor ¸ si de obicei sunt preluate din eviden¸ tele istorice care sunt
înregistrate ¸ si completate f ˘ar˘a inten¸ tia imediat ˘a de a fi preluate pentru luarea deciziilor.
Informa¸ tiile sunt compuse din date care au fost preluate, prelucrate sau utilizate în alt
mod pentru a informa sau a interfera scop, argumente sau ca o baz ˘a de previziune sau de
luare a deciziilor cu privire la orice unitate. Informa¸ tia este o cunoa¸ stere care deriv ˘a din
fapte pentru func¸ tionarea eficient ˘a a sistemelor plasate în contextul corect, cu scopul de
a reduce incertitudinea cu privire la cursurile alternative de ac¸ tiune, deoarece acestea se
bazeaz ˘a pe descrierea ¸ si m ˘asurarea atributelor diferitelor entit ˘a¸ ti asociate întreprinderii.
Platforma de management este în general definit ˘a ca fiind un sistem integrat de
utilizator-ma¸ sin ˘a pentru furnizarea de informa¸ tii pentru a sprijini opera¸ tiunile, gestionarea
¸ si func¸ tiile de luare a deciziilor într-o organiza¸ tie.
De asemenea, platforma de management are la baz ˘a seturi de proceduri
interdependente care utilizeaz ˘a infrastructura platformei în cadrul INCESA pentru a
genera ¸ si a transmite informa¸ tiile dorite. Aplica¸ tia a fost conceput ˘a pentru a sprijini luarea
74

CONCLUZII 75
deciziilor de c ˘atre persoanele asociate cu INCESA în procesul de realizare a obiectivelor
sale. Aplica¸ tia mai ob¸ tine date ¸ si alte resurse ale infrastructurii IT ca intr ˘ari din mediul
înconjur ˘ator ¸ si le proceseaz ˘a pentru a satisface nevoile de informare ale diferitelor entit ˘a¸ ti
asociate INCESA.
Principalele cerin¸ te ale aplica¸ tiei au fost realizate cu ajutorul modulelor create folosind
mecanisme inteligente de împachetare sau tehnologii cât mai flexibile. Aplica¸ tia are o
func¸ tionalitate testat ˘a ¸ si verificat ˘a în profuzime pentru a ob¸ tine, în final, un produs fiabil ¸ si
cât mai durabil în timp. Acest rezultat este confirmat de c ˘atre beneficiari care consider ˘a
aplica¸ tia ca fiind de mare ajutor în organizarea centrului de cercetare INCESA.

Bibliografie
[1]Mark Watson Practical Artificial Intelligence Programming With Java November
11, 2008.
[2]Diana Elena Diaconu Pagini Web cu Javascript Septembrie 2006.
[3]Bezroukov, Nikolai History of development of Midnight Commander
softpanorama.org 2014-09-20.
[4]Ian Gorton Essential Software Architecture. Editura Springer. 2006.
[5]Jane Trembath Midnight Commander .
[6]William Shotts The Linux Command Line .
[7]Java EE Overview, Oracle Corporation February 26, 2017.
[8]Di erences between Java EE and Java SE ; An Introduction to the Java EE Platform,
2012-07-18.
[9]Ocial Alfresco documentation .
[10] Ocial PuTTY documentation .
[11] MidnightCommander /mc – GitHub 29 March 2017.
76

Similar Posts