Newsgroup: it.comp.java
Titolo: EJB e Application server

Qualcuno puo' spiegarmi IN PRATICA cosa sono gli EJB? (Enterprise
JavaBean)
Ho consultato Wikipedia ma non riesco a capire, il senso mi sfugge.
Potete mostrarmi un esempio di programma scritto in Java?
Un'altra cosa che non riesco a capire e' cos'e' un Application server,
qualcuno puo' spiegarmelo?


Beh la versione su Wikipedia (IT) è stringata ma come definizione
generale mi sembra completa. Cosa esattamente non riesci a capire?
Banalmente:
- gli EJB sono delle classi Java che girano in un server
(l'Application Server);
- queste classi possono essere utilizzate da altre classi (dette
client), in maniera abbastanza "trasparente", cioè il client crede di
chiamare delle semplici classi in locale ma in realtà c'è tutto un
meccanismo di comunicazione sotto;
- ci sono vari tipi di EJB, che in comune hanno lo stare su un A.S. e
poco altro;
- di solito gli EJB si utilizzano in ambiti enteprise, quindi oltre ad
essi sono coinvolte molte altre tecnologie: database & transazioni,
code di messaggi, sicurezza, e tutto quello che ti può venire in
mente.
Alla fine però non mi sembra di essere stato molto più chiaro di
Wikipedia ;)
--
www.megadix.it

 Potete mostrarmi un esempio di programma scritto in Java?
Gli ejb sono dei beans che hanno delle caratteristiche diverse dai normali
beans. Un bean normale e' una classe ( che puo' utilizzarne anche parecchie
altre ) che espone dei getter e dei setter su alcune proprieta',
in pratica e' una classse normale
Un Ejb ha queste caratteristiche a seconda del tipo di cui e':
Tutti
1 ) E' raggiungibile via jndi/rmi/corba , cioe' tramite un sistema diverso
rispetto all'uso del class loader e quindi della usuale NEW e assegnamento a
variabile dell'istanza. Questo permette
a. di raggiungere i bean su macchine remote
b. permette volendo di eseguire i bean in un claster e bilanciarne il carico
stateful e stateless
2) E' dotato di un gestore di transaction.
Quindi se fallisce una operazione o piu' a db o anche di logica si
"autorollebacka" a prima del fallimento
entity)
3) Le caratteristiche degli entity bean dipendono dalla loro generazione (
entity 1 , 2 e 3 )
senza entrare troppo nel dettaglio comuqnue offrono uno strato di
persistenza dei dati
MessageDrivenBean
4) Aiutano a gestire le code jms
Bean a tempo non ricorso il nome perche' non li ho mai usati
5)
Gestiscono operazioni a tempo
Tutti
6) Per permettere soprattutto 1) ma in generale per poter essere
trasportabili e usabili su ogni Macchina quando si usano gli ejb bisogna
stare ATTENTISSIMI a usare
a) File System
b) Variabili di isatanza ( solo negli stateful si usano di solito )
c) Thread
d) Memoria ( classi condivise )
e) Socket ( con prudenza )
Un modo semplificato ma sicuro di utilizzare gli ejb e' quello di non usare
nessuna di queste cose negli ejb
Ho cercato di essere sintetico e semplificato.
Ciao Nicola
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 JavaBean)
Prima di tutto "Enterprise" significa "grande azienda"
tipo banca, multinazionale, etc...
Allora un' applicazione di tipo enterprise è generalmente
costituita da componenti distribuiti che girano su macchine
differenti (Server Applicativi).
Gli oggetti (EJB) istanziati sul AS forniscono dei servizi ai client
tipo connessioni ai DB e con funzioni di business, etc. assicurando
all'applicazione che ne fa uso le caratteristiche di affidabilità, 
scalabilità, sicurezza,..
Gli EJB quindi sfruttano queste caratteristiche fornite  dall'AS sul quale 
girano.
Cioè l'AS mette a disposizione gli EJB per l'applicazione client.
Chi costruisce l'applicazione non deve preoccuparsi di
implementare le sudette caratteristiche.
Cmq per gestire una applicazione desktop tipo rubrica telefonica non è 
consigliata
una struttura EJB.
ciauz

 tipo banca, multinazionale, etc...
in quale lingua?

 in quale lingua?
In ejbese, 'gnurant! ;)

 In ejbese, 'gnurant! ;)
ah. io sapevo che in vulcaniano voleva dire "astronave" :-)

Che significa che l'application server e' un AMBIENTE dove si eseguono
applicazioni?
Che l'application server fornisce una API agli EJB?

 Che l'application server fornisce una API agli EJB?
No (o meglio: non solo): l'application server è una applicazione che ne 
tiene altre in esecuzione al suo interno e che fa da "collante" tra queste.
Puoi vederla così: una applicazione che ne lancia altre, gestendole al 
proprio interno, fornendo loro dei servizi e delle funzionalità condivise.
Un esempio pratico: gestione delle transazioni. L'AS verifica che 
all'interno di una applicazione (in esecuzione al suo interno) o tra 
diverse applicazioni le operazioni sulla base dati non creino conflitti.
Tra le funzionalità fornite dall'AS alle applicazioni c'è anche l'uso (e 
la condivisione, se utilizzi più AS in parallelo) dei componenti lato 
server, gli EJB.
Ciao,
Paolo

 ha scritto nel messaggio 
news:a92e8aa5-dc36-4e3d...@s12g2000prg.googlegroups.com...

della serie prevenire č meglio che curare   :-))


GRAZIE per la spiegazione, adesso ho le idee un po' piu' chiare.
Di solito gli EJB che funzioni hanno? A cosa servono?

 Di solito gli EJB che funzioni hanno? A cosa servono?
I link che ti hanno segnalato sicuramente possono spiegare la cosa molto 
meglio e più dettagliatamente di quanto non possa fare io... :)
Sono importanti componenti lato server, si usano per gestire 
transazioni, programmazione distribuita, persistenza, chiamate remote... 
solo per citare i primi usi che mi vengono in mente. ;)
Ciao,
Paolo

 
Una domanda. Volendo costruire un' applicazione web
"pensando in grande", cioè prevedendo (e sperando)
che la cosa diventi Enterprise, il passaggio da
semplice Servlet a applicazione con gli EJB è
doloroso?
Questo perchè come tutti i programmatori sanno è
meglio prima sedersi a tavolino e decidere il da
farsi...

 farsi...
Questo i programmatori non dovrebbero saperlo, sennò a che servono 
progettisti e architetti sw? ;)
Ciao,
Paolo

 doloroso?
ejb interviene nella business logic, se non hai l'accortezza di separare 
sin dall'inizio la business logic il passaggio non è doloroso, è 
impossibile (senza una riscrittura totale, s'intende).

 transazioni (e le altre "cosette" di cui abbiamo parlato nel thread).
Già si infatti, intendevo servlet per applicazione
web che interagisce con un database.
Sicuramente la logica è a priori separata dallo
strato visualizzazione.
Grazie mille della risposta.

 di cui abbiamo parlato nel thread).
Beh, in realtà da un punto di vista formale, se hai uno strato di business 
logic separato da logica di presentazione -il che è praticamente un must, 
quindi non è un'opzione - che questo sia costituito da "normali" classi o da 
EJB cambia poco. IMHO la gestione del progetto un poco si complica, ma 
dipende tutto da quali strumenti di sviluppo e quale appserver utilizzi.
Buon lavoro e buon anno !
Scorpio. 

 doloroso?






Se lavori bene separando i vari "strati architetturali" puoi EJB-zzare (fatemi passare in termine) le tue classi java con poca fatica.



Tieni conto che EJB risponde a problemi si "scalatura" quindi i molti accessi concorrenti. Se l'applicazione a pochi utenti e scarsi volumi EJB non serve a complicare installazione della applicazione.