Sviluppo di servizi REST per Android - Luca Masini
Oracle Application Server 10g
1. Oracle Application Server 10g
Paolo Campegiani
paolo@paolocampegiani.it
http://www.paolocampegiani.it
– p.
2. I prodotti Oracle
Oracle Database: leader di mercato nel settore
medie/grandi imprese;
Oracle Applications: piattaforma ERP;
Oracle Collaboration Suite: piattaforma di
messaggistica, mail e groupware;
Oracle Application Server: application server per
architetture three-tier;
– p.
3. Piattaforme
Presente in due versioni: 10g Release 1 (versione
9.0.4.0) e 10g Release 2 (10.1.2.0);
Sviluppato su Linux, portato poi sulle altre piattaforme
su cui girano i prodotti Oracle;
Per Linux è certificato, come gli altri prodotti, su RedHat
Enterprise Linux e su SuSE Advanced Server (ex
UnitedLinux);
Linux è la piattaforma d’elezione di Oracle;
– p.
4. Architettura a tre livelli
Client Tier
Web Tier HTTP Listener Web Cache
Oracle HTTP Server Reports Server
Application Server Tier Forms Server Portal
Discoverer Oracle Internet Directory
Single Sign On Wireless EMS
Database Tier Real Application Cluster
– p.
5. Scalabilità
Client Tier
Web Tier Web Tier
AppServer AppServer AppServer
Tier Tier Tier
RAC RAC RAC
DB
– p.
6. Clustering e Failover
Farm
Cluster
Application Server Instance
Application Server Instance
Repository
Cluster
Application Server Instance
Application Server Instance
Application Server Instance
Standalone Instance
Application Server Instance
– p.
7. Infrastruttura
E’ un database (10mila oggetti e 1800 tabelle) condiviso
nella farm:
Configurazioni
Identità e profili utente
Pagine Web
E’ strettamente associata a queste componenti:
Oracle Internet Directory
Distributed Configuration Management
Oracle Single Sign On (SSO)
Wireless, Portal, OEM repository
– p.
8. Oracle Internet Directory
E’ un server LDAP, associato all’Oracle SSO:
Descrive gli utenti autorizzati ad accedere all’application
Server, in termini di password, privilegi, risorse;
E’ accessibile a linea di comando oppure via web con il
Delegated Administration Service;
Autentica verso le applicazioni presenti nell’Application
Server in modo diretto o proxy (ad es. Active Directory);
Con il SSO un utente autenticatosi per una
applicazione è autenticato anche con tutte le altre
presente nella farm;
E’ il punto in cui definire politiche di sicurezza;
Può autenticare verso applicazioni esterne;
– p.
9. Middle Tier
Può essere di tre tipi diversi:
J2EE e Cache: per implementare una Web Cache;
Business Intelligence: in più Forms Server, Reports
Server, Portal ...;
Wireless Tier: in più trans-coding delle pagine per
dispositivi mobili e messaggistica (SMS);
– p.
10. WebCache
Non è basata su Apache;
Reverse proxy a due vie a livello 7;
Stateful Load Balancing;
Cluster e Failover automatico con altre WebCache;
Invalidazione tramite regole e programmatica;
Front-end SSL verso un application server non SSL;
– p. 1
11. Oracle HTTP Server
E’ Apache 1.3.28 con dei moduli aggiuntivi (e proprietari):
mod_oradav: Oracle DAV
mod_osso: Oracle Single Sign On
mod_plsql: Pl/Sql for Web
mod_oc4j: Oracle Container 4 Java
...
Oracle HTTP Server supporta inoltre mod_perl e pagine in
PHP.
– p. 1
12. Topologie
DB Tier
WebCache MidTier
DB Tier
Internet Load Balancer
DB
External Firewall
DB Tier
WebCache MidTier
Firewall
Infrastructure HW Cluster
Infra
– p. 1
13. Islands
Le applicazioni J2EE possono replicare lo stato su più
server facenti parti della stessa island, per avere un failover
a caldo:
Midtier Server A Midtier Server B
Island 1
OC4J−App1 OC4J−App1
OC4J−App3 OC4J−App4
Island 2
OC4J−App2 OC4J−App2
– p. 1
14. Transparent Application Failover
Protegge le connessioni dall’application server al database
(che deve operare in modalità RAC). Richiede un client
JDBC thick poichè usa funzionalità avanzate di Oracle Net.
Transazioni attive: Rollback automatico di insert, update
e delete se l’istanza fallisce
Connessioni al DB: Connessione automatica ad un’altra
istanza;
Failover su select: Se l’istanza fallisce durante una
select (cursore) ne viene selezionata un’altra e si
ottengono le righe successive;
I dati di sessione non persistenti vengono persi in caso di
caduta di un’istanza.
– p. 1
15. OC4J
OC4J si basa su Java 1.3.1, e fornisce un container per
servlet e un traduttore per pagine JSP;
Alcune componenti dell’Application Server scritte in
Java hanno i loro container (Portal, DAS, Business
Intelligence)
Gli OC4J realizzano clustering e load balancing;
I servizi forniti dall’OC4J includono accesso al db,
supporto alle transazioni, sicurezza, caching,
concorrenza, container managed persistence;
– p. 1
16. Configurazione OC4J
La configurazione avviene tramite dei file XML, divisi in tre
categorie:
configurazione del server: server.xml,
default-web-site.xml, http-web-site.xml, application.xml;
relativi J2EE : application.xml, web.xml, ejb-jar.xml,
application-client.xml;
relativi a OC4J : orion-application.xml, orion-web.xml,
orion-ejb-web.xml;
– p. 1
18. Attivazione istanze J2EE
opmnctl: l’attivazione dell’istanza di middle tier attiva i
container OC4J presenti e quindi le applicazioni;
dcmctl : permette di far partire/arrestare uno specifico
container;
Enterprise Manager Application Server Console;
– p. 1
19. TopLink
L’accesso ad un database è una funzionalità essenziale di
una applicazione J2EE. Si può realizzare tramite:
JDBC: Oracle fornisce per i suoi database:
Thin Driver;
OCI Driver (utilizza un client Oracle);
Server-Side Driver (per programmi Java che girano
nel database);
entity EJB;
– p. 1
20. JNDI
Java Naming Directory Interface: usato da un EJB per
localizzare altri EJB o data sources, ovvero un contesto che
definisce le informazioni necessarie ad accedere ad un
database.
I data sources sono definiti in data-sources.xml (specifico
per ogni applicazione J2EE).
– p. 2
21. Prestazioni e tuning
Il tuning di un sistema distribuito è un compito difficile.
Il database Oracle ha alcune centinaia di parametri di
configurazione;
Gli Application Server, OID e WebCache hanno ulteriori
parametri;
Capacity planning: misurare prestazioni end-to-end e
fare previsioni analizzando il carico dei componenti
(vmstat + dmstool + file di log);
– p. 2