You are on page 1of 31

Curs 1

Platforma Java Enterprise Editition (Java EE)


Standard n domeniul platformelor enterprise
Platform pentru programarea la nivel de server
Robustee
Servicii
Promoveaz modularitatea
Uurin n dezvoltare
Set clar de specificaii pentru implementatori
API-uri
JDBC, RMI, JavaMail, JMS, XML
Web services etc

API-uri unice Java EE


Enterprise Java Beans (EJB)
Java Transaction API (JTA)
Java Message Service (JMS)
Java EE Connector Architecture (JCA)
Java Persistence API
Interceptors
Servlets
Portlets (ruleaz n portaluri web)
Java Server Pages (JSP)
Java Server Faces (JSF)
Web services
etc
Portabilitate
Scalabilitate
Integrare cu sisteme legacy
Management automat:
Resurse
Tranzacii
Securitate
Concuren
Componente
Servicii
Sun GlassFish
OW2 JOnAS Application Server
JBoss Application Server
Apache Geronimo
IBM WebSphere
Oracle WebLogic Application Server
SAP NetWeaver Application Server
etc
Oracle WebLogic Server Standard Edition 11g
$10.000 / CPU, $2.200 cost suport n primul an.
Oracle WebLogic Server Standard Edition is the world's best application server for building and running enterprise applications and
services. It fully implements the latest Java EE standards and offers choice in development frameworks and tooling. Comprehensive
and accessible management capabilities enable administration of sophisticated systems via a well-designed graphical console
and/or automation. All users benefit from Oracle WebLogic Server's reliability and performance, which has been tested over years of
enterprise-grade production use in demanding customer environments the world over.

Oracle WebLogic Server Enterprise Edition 11g


$25.000 / CPU, $5.500 cost suport n primul an.
Oracle WebLogic Server Enterprise Edition is the application server of choice when applications and services need high availability
and superior diagnostic capabilities. The Enterprise Edition includes all the features and benefits of Oracle WebLogic Server Standard
Edition plus proven clustering technology, cross-domain management, and comprehensive diagnostic tooling. Clustering provides
seamless migration and failover from one server to another, ensuring continuous operation for your business-critical applications
and services. Deep diagnostics and memory leak detection help prevent application disruption by getting to the root cause of issues
including performance bottlenecks, poor memory utilization, and other configuration anomalies.

Oracle WebLogic Suite 11g


$45.000 / CPU, $9.900 cost suport n primul an.
Oracle WebLogic Suite 11g brings together unmatched performance, scalability, efficiency, and manageability in a single, unified
application server offering. It is the cornerstone Java EE platform in support of application grid computing. With Oracle Real
Operations Insight and Oracle Real Operations Automation, Oracle WebLogic Suite 11g dramatically reduces cost associated with
diagnostics, configuration, and deployment on production servers. The Suite integrates effortlessly with other Oracle products
through Oracle GridLink for RAC, Oracle Enterprise Grid Messaging, and other connection technologies to form a foundation for your
entire Oracle portfolio. Oracle WebLogic Suite 11g is optimized for modern IT systems to deliver more processing on fewer servers.

(sursa: http://www.oracle.com/us/products/middleware/application-server, 18 februarie 2010)


(sursa: http://www.oracle.com/us/products/middleware/application-server, 18 februarie 2010)
(sursa: http://java.sun.com/javaee/6/docs/tutorial/doc, 18 februarie 2010)
Platforma JEE (Java Enteprise Edition) definete standardul pentru
dezvoltarea aplicaiilor multi-tier, simplificnd dezvoltarea
acestora prin introducerea componentelor standardizate. Se
ofer un set variat de servicii middleware cum ar fi: management
automat al tranzaciilor, persisten automat, clustering,
securitate etc.
Cel mai important aspect oferit de platforma JEE este acela al
unui nou model de aplicaie.
Specificaiile JEE definesc o arhitectur multi-tier, componentele
corespunztoare fiecrui nivel fiind:
layer prezentare (Client tire): browser web, aplicaie java, dispozitiv
electronic ce dispune de o main virtual/hardware Java
layer business logic (Web tire + Business tire): server J2EE, de obicei
alctuit din 2 containere: un container pentru aplicaii EJB i un container
pentru aplicaii web (pagini JSP, servlet-uri)
layer date (EIS tire): sistem local de fiiere, SGBD, aplicaii legacy etc.
(sursa: http://java.sun.com/javaee/6/docs/tutorial/doc, 18 februarie 2010)
(sursa: http://java.sun.com/javaee/6/docs/tutorial/doc, 18 februarie 2010)
(sursa: http://java.sun.com/javaee/6/docs/tutorial/doc, 18 februarie 2010)
Managementul tranzaciilor: tranzaciile sunt controlate automat de
ctre serverul de aplicaii, programatorul fiind responsabil doar cu
configurarea caracteristicilor principale ale acestora.
Resource pooling: acest mecanism este coninut n cadrul platformei,
fiind automat disponibil oricrei aplicaii. Programatorul nu mai este
nevoit s scrie cod special de optimizare a aplicaiilor cu implementri
de pool-uri de obiecte (conexiuni la baze de date, conexiuni cu alte
resurse etc).
Scalabilitate: abilitatea unei aplicaii de a-i menine performanele
oferite odat cu creterea proporional a numrului de cereri fa de
numrul de resurse puse la dispoziie. Se asigur dezvoltarea i
integrarea de noi module fr a perturba funcionarea aplicaiei iniiale.
Securitate: mecanisme de autentificare si API-uri standardizate.
Load balancing: asigurarea echilibrrii ncrcrii serverelor de aplicaii ce
deservesc cereri prin redirecionarea automat a acestora spre serverele
cel mai puin ncrcate.
Fault tolerance: toleran la defecte se realizeaz automat n cazul
serviciilor idempotente
Programatorul se poate concentra aproape n totalitate asupra prilor
eseniale ale unei aplicaii: logic, algoritmi, interfee, flux i model de
date etc.
O arhitectur enterprise pune la dispoziia dezvoltatorilor de aplicaii
distribuite o infrastructur pentru gzduirea aplicaiilor (containere) ct
i un set de API-uri bine definite pentru dezvoltarea acestora.

Specificaiile JEE nu impun o modalitate de implementare a containerelor


i nici a setului de API-uri, ci doar specific rolurile i interfeele
acestora, detaliile de implementare rmnnd la latitudinea vendorilor.

Prin urmare, specificaiile definesc prile componente ale platformei JEE


pe baza crora vendorii dezvolt produse conforme acestora sub forma
unor servere de aplicaii compatibile JEE. Firma Sun Microsystems,
autoarea acestor specificaii, ofer o implementare de referin sub
numele JEE RI (Reference Implementation), aceasta fiind disponibil
pentru download pe site-ul Sun.
Nivelul de business logic este n general alctuit din dou
containere:
container pentru aplicaii web ofer suport pentru managementul i
rularea servlet-urilor i a JSP-urilor
container pentru componente EJB ofer suport pentru managementul i
rularea componentelor EJB

Tehnologiile JEE pot fi clasificate dup cum urmeaz:


tehnologia orientat pe componente: apare la nivelul business logic, fiind
axat pe trei tipuri de componente principale: pagini JSP, servlet-uri i
componente EJB.
tehnologia orientat pe servicii: asigur suportul necesar pentru prima
tehnologie, fiind compus dintr-o serie de API-uri cum ar fi: JDBC, JTA,
JMS, JNDI etc.
tehnologia de comunicaii: ofer standarde de comunicaie ntre modulele
aplicaiilor enterprise, fiind axat pe o serie de protocoale clasice TCP/IP
(exemplu: HTTP, HTTPS, SSL etc.), protocoale pentru apelul obiectelor la
distan (exemplu: RMI over IIOP), i alte protocoale cum ar fi protocoalele
pentru JMS sau JavaMail.
Logica unei aplicaii enterprise este implementat la
nivelul componentelor EJB, tot codul de business logic
fiind regsit n cadrul acestora sau n cadrul altor
componente separate folosite de ctre componentele
EJB (exemplu: cod pentru interogarea bazelor de date,
cod pentru gestiunea courilor de cumprturi, cod
pentru actualizarea datelor etc).

Componentele EJB sunt implementate sub forma unor


grupuri de clase i interfee java care implementeaz
i/sau extind clase i interfee oferite de platforma
JEE, cu scopul de a oferi posibilitatea containerului s
automatizeze o serie de operaii cum ar fi:
managementul tranzaciilor, managementul pool-
urilor de resurse, controlul componentelor EJB etc.
Componentele EJB sunt de dou tipuri:
Session beans: ncapsuleaz comportamentul unei aplicaii enterprise i
implementeaz serviciile oferite de aceasta, modelnd astfel business logic-ul.
Message driven beans: asigur suportul necesar pentru tehnologia JMS (Java
Messaging Service), aceste bean-uri fiind automat apelate de ctre containerul EJB n
momentul recepionrii de mesaje JMS. Prin urmare, message driven bean-urile sunt
responsabile cu procesarea mesajelor primite, implementnd astfel o parte din
business logic-ul aplicaiei enterprise.

Componentele care reprezint datele din EIS se numesc entiti


persistente (Java Persistence Entities). Acestea definesc obiectele
persistente ale unei aplicaii enterprise, modelnd datele prezente n
cadrul celui de-al treilea layer din cadrul arhitecturii JEE, layerul de date.

Modelarea business logic-ului presupune efectuarea unor operaii


asupra entitilor persistente, n general de ctre componentele de tip
session bean. Managementul persistenei strii componentelor de tip
entitate poate fi fcut explicit de ctre programator sau lsat n seama
serverului de aplicaii.
(sursa: https://www.sun.com/offers/docs/java_EE6_overview_paper.pdf, 18 februarie 2010)
Arhitectur de conectare a serverelor de aplicaii enterprise cu sisteme
de informaii enterprise (EIS enterprise information systems)
Set de specificaii standard care descriu interaciunea la nivel de sistem
dintre serverele de aplicaii enterprise i adaptoarele de resurse
Managementul conexiunilor, pool de conexiuni
Managementul tranzaciilor (incusiv dac exist mai muli manageri de resurse
diferii)
Managementul securitii
Managementul adaptorilor de resurse (controlul asupra life-cycle)
Suport i management pentru taskuri iniiate de nsi adaptoarele de resurse
(monitorizarea reelei, prelucre a datelor etc). Furnizeaz posibilitatea de a folosi
logica de management i pool-urile de resursele ale serverelor de aplicaii
Transmitere asincron de mesaje ctre serverul de aplicaii
JDBC folosit n mod special pentru conectarea aplicaiilor JEE la baze de
date
JCA arhitectur mult mai generic pentru conectarea la sisteme de date
(inclusiv legacy)
Application server vendor (suport pentru JCA) + EIS vendor (resource
adapter)
For enterprise application integration, bidirectional connectivity between enterprise
applications and an Enterprise Information System (EIS) is essential. The Java EE Connector
Architecture defines a standard set of contracts that allow bidirectional connectivity between
enterprise applications and EIS providers. It also formalizes the relationships, interactions, and
the packaging of the integration layer, thus enabling unfettered enterprise application
integration. If an application server vendor extends its system once to support the connector
architecture, the application server vendor is assured of being able to seamlessly connect to
multiple off-the-shelf EIS offerings. Likewise, if an EIS vendor provides an industry standard
resource adapter, such as is described within JSR 322, the EIS vendor is assured of being able
to plug into any application server that supports the connector architecture.
The Connector 1.6 specification (JSR 322) enhances the Connector Architecture through the
following means:
Ease of development: Dramatically simplifies the development of resource adapters through extensive use of
Java language annotations, reducing the need to write redundant code and the need for a deployment
descriptor (ra.xml), provides better configuration defaults, and so on.
Generic Work Context mechanism: Defines a generic mechanism for propagating contextual information
during Work execution. The specification standardizes passing in security, transactional and other quality-
of-service parameters from an EIS to a Java EE component during Work execution.
Security Work Context: Defines a standard contract that a resource adapter could employ to establish
security information (established identity) while submitting a Work instance for execution to a WorkManager,
and while delivering messages to message endpoints (MDBs) residing in the application server.

(sursa: https://www.sun.com/offers/docs/java_EE6_overview_paper.pdf, 18 februarie 2010)


Persistence is the technique through which object models broker the
access and manipulation of information from a relational database.
JPA handles the details of how relational data is mapped to Java objects,
and it standardizes Object/Relational mapping.
JPA was introduced in Java EE 5, and provided a POJO-based persistence
model for Java EE and Java SE applications.
JPA has been enhanced in Java EE 6. The Java Persistence API (JPA)
version 2.0 specification facilitates more effective and reliable (that is,
more strongly typed) methodology for building object-centric criteria-
based dynamic database queries.
Object/Relational mapping enhancements. For example, JPA 2.0 adds the ability to
map collections of basic data types, such as Strings or Integers, as well as collections
of embeddable objects. There are new annotations that support collection mappings.
Java Persistence Query Language (JPQL) enhancements. These include new operators
such as NULLIF, VALUE, and others, and case expressions can be used in queries.
Criteria API. A type safe query mechanism, based on the metamodel concept, which
can verify persistent Java objects. It can be statically or dynamically accessed. A
string-based model is also available, but not as type safe.

(sursa: https://www.sun.com/offers/docs/java_EE6_overview_paper.pdf, 18 februarie 2010)


Dependency Injection poate fi aplicat tuturor resurselor de care are
nevoie o component
Aplicaia nu mai include cod pentru cutarea i crearea resurselor
Serverul de aplicaii injectez automat resursele folosind adnotrile din
cod
Bean-urile pot fi ataate unor scopuri (request, sesiune etc); serverul de
aplicaii va face managementul automat att al life-cycle-lui bean-urilor
ct i al resurselor necesare acestora (creare, injectare, distrugere)
Bean-urile au abilitatea de a genera i observa evenimente, rezultnd o
interaciune loosely-coupled
Arhitectura permite suportul tranzacional pentru seciunea web a unei
aplicaii enterprise
Desi popular, patternul Dependecy Injection nu a avut parte de o
abordare standard pn recent. Dependency Injection for Java (JSR 330)
introduce un set standard de adnotri care pot fi folosite pentru
Dependecy Injection.
Paii necesari pentru dezvoltarea i lansarea n
producie a aplicaiilor JEE sunt:
dezvoltarea componentelor (EJB-uri, pagini JSP, servlet-
uri, pagini HTML etc.)
asamblarea componentelor n module
asamblarea modulelor n aplicaii
deployment-ul aplicaiilor (instalarea acestora n cadrul
serverelor de aplicaii compatibile cu specificaiile JEE)
Modulele JEE sunt pri componente ale
aplicaiilor enterprise special proiectate pentru a
rula n cadrul containerelor puse la dispoziie de
serverele de aplicaii JEE.
modul web conine servlet-uri, pagini JSP, librrii de tag-uri JSP, fiiere
jar, documente html, documente multimedia asamblate n pagini html,
applet-uri, clase Java i alte resurse.
componentele se asambleaz respectnd o structur descris de specificaiile JEE la
care se adaug un fiier XML de configurare (web deployment descriptor file) avnd
numele web.xml.
modulul poate fi opional comprimat ntr-un fiier cu extensia standard .war (web
archive).
modulul va rula n cadrul containerul web pus la dispoziie de serverele de aplicaii
JEE.

modul EJB conine un set de fiiere java compilate alturi de alte


resurse necesare aplicaiei enterprise.
componentele se asambleaz, ca i n cadrul modulului web, respectnd o structur
descris n cadrul specificaiilor JEE la care se adaug un fiier XML de configurare
(ejb deployment descriptor file) avnd numele ejb-jar.xml. Modulul EJB va rula n
containerul EJB pus la dispoziie de serverele de aplicaii JEE.

n toate cazurile descrise mai sus, rolul fiierului XML este acela de a specifica, n funcie
de nivelul la care se afl, comportamentul componentelor n cadrul modulelor, respectiv
al modulelor n cadrul aplicaiei enterprise.
Ultima faz cuprins de specificaiile JEE este faza de
deployment, adic de instalare a aplicaiei enterprise
n cadrul serverelor de aplicaii JEE, fiecare server de
aplicaii punnd la dispoziie instrumente specifice de
deployment.

Specificaiile JEE descriu un contract bine definit pe


care serverele de aplicaii compatibile JEE trebuie s l
respecte. Un aspect important este acela c
specificaiile JEE nu interzic extinderea i oferirea de
noi faciliti, o aplicaie enterprise putnd astfel fi
compatibil JEE i n acelai timp s prezinte
particulariti specifice numai n cadrul unui anumit
server de aplicaii.
Specificaia EJB descrie un model de componente pe partea
de server, definind rolurile care apar n procesul de
dezvoltare (development) i instalare (deployment),
precum i componentele sistemului.

Specificaia definete un numr de roluri care apar n


dezvoltarea, instalarea i rularea unui sistem enterprise
distribuit. Vendori, administratori i programatori joac
roluri variate care permit partiionarea cunotinelor
tehnice pe domenii. Spre exemplu, vendorii ofer un cadru
de lucru, n timp ce programatorii dezvolt componente
specifice (exemplu: componente pentru contabilitate etc).

O aceeai entitate poate avea unul sau mai multe roluri.


Furnizorul de Enterprise Bean-uri (Enterprise Bean Provider)
dezvoltator de componente EJB reutilizabile, mpachetate n fiiere ejb-
jar conforme cu structura definit de specificaii.
Asamblorul de aplicaii (Application Assembler) asambleaz aplicaii
enterprise pe baza unei colecii de fiiere ejb-jar. Acest rol include
dezvoltarea de noi componente care utilizeaz colecia pus la
dispoziie.
Instalatorul (Deployer) preia colecia de fiiere ejb-jar de la Asamblorul
de aplicaii i/sau Furnizorul de Enterprise Bean-uri i le instaleaz ntr-
un mediu de execuie definit n termenii containerelor EJB (puse la
dispoziie de serverele de aplicaii JEE).
Furnizorul de Containere/Servere de aplicaii enterprise
(Container/Application Server Vendor) ofer medii de execuie i
instrumente specifice care sunt utilizate pentru instalarea, administrarea
i rularea componentelor enterprise.
Administratorul de sistem (System Administrator) gestioneaz
componentele i serviciile oferite, fiind responsabil cu configurarea i
asigurarea unei interaciuni corecte ntre acestea. Acest rol include
managementul, activarea i rularea ntregului sistem enterprise.
Componentele EJB sunt elemente de business logic reutilizabile, care
ader la standarde i modele de proiectare bine definite n cadrul
specificaiei EJB, asigurndu-se astfel portabilitatea acestora.
Arhitectura descris de specificaii permite ca alte servicii precum
securitate, evacuri pe niveluri secundare de memorie, tranzacii
distribuite etc. s fie utilizate n folosul componentelor EJB.

Containerul EJB este un mediu de execuie care conine i ruleaz


componente EJB, oferind un set de servicii standard pentru acestea.
Pentru a permite independena de vendor, responsabilitile
containerului EJB sunt strict definite n cadrul specificaiilor.
Containerul EJB ofer partea de infrastructur pentru EJB-uri, incluznd
tranzacii distribuite, securitate, gestiunea ciclului de via a
componentelor, mecanisme de caching, gestiunea firelor de execuie,
gestiunea sesiunilor etc.
Un server EJB este definit ca un server de aplicaii JEE care conine i
ruleaz unul sau mai multe containere EJB. Se poate n general
presupune c att containerul EJB ct i serverul EJB reprezint una i
aceeai entitate.
(sursa: http://java.sun.com/javaee/6/docs/tutorial/doc, 18 februarie 2010)
Serverul de aplicaii Java EE: Component de runtime a unei
aplicaii enterprise. Furnizeaz containere EJB i containere web.
Container Enterprise JavaBeans (EJB): Realizeaz managementul
bean-urilor enterprise din cadrul aplicaiilor JEE. Bean-urile
enterprise cu containerul aferent ruleaz n cadrul serverului de
aplicaii JEE.
Containerul web: Realizeaz managementul execuiei paginilor
web, a servleturilor i a unor componente EJB. Componentele
web cu containerul aferent ruleaz n cadrul serverului de
aplicaii JEE.
Containerul de aplicaie client: Realizeaz managementul
execuiei componentelor de la nivelul clientului. Componentele
client cu containerul aferent ruleaz pe calculatorul clientului.
Containerul pentru appleturi: Realizeaz managementul
execuiei appleturilor. Este compus din browserul web i Java
Plug-in, care mpreun ruleaz pe calculatorul clientului.
After 10 years of running business critical applications for
thousands of organizations, the Java Enterprise Edition
technology platform continues to make tremendous progress as
an enterprise application development and deployment platform.
Java EE 6 delivers a comprehensive set of APIs that can simplify
the developer experience while improving productivity.
Annotation-based programming and zero-configuration Web
frameworks that leverage open-source innovation further
simplify the developer environment while extending the
platform.
Profiles create new, focused architectures of standards-based EJB
components, while pruning clears out unused technologies.
There are several technical enhancements, including Servlet 3.0,
Facelets, RESTful Web services, Connectors, an enhanced
persistence architecture, dependency injection, and much more.
Developing enterprise applications with Java technology has
never been easier.

(sursa: https://www.sun.com/offers/docs/java_EE6_overview_paper.pdf, 18 februarie 2010)

You might also like