Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 46 di 68
  • livello ninja
Indice lezioni

BMP - Web Application

Una web application completa per la gestione di conti correnti bancari
Una web application completa per la gestione di conti correnti bancari
Link copiato negli appunti

La qualità più importante da attribuire allo sviluppo mediante EJB è quella di consentire un veloce sviluppo di servizi in maniera anche incrementale. Questo che vedremo ne è l'esempio palese. Rimaniamo legati all'ultimo bean che abbiamo sviluppato: su di esso vogliamo costruire un servizio web based, per la gestione dei conti correnti.

Definiamo le funzioni che il servizio deve avere:

  • Creazione di un account
  • Visualizzazione di un account
  • Operazione di deposito
  • Operazione di prelievo

Il componente è già installato sul server e, in un ambito MVC, rappresenta il model. Il controller dovrà quindi curare gli aspetti di business, occupandosi del recupero del model e dell'inoltro verso la corretta view. Come controller utilizzeremo una servlet e per ognuna delle funzioni previste, creeremo un metodo che ne contenga il flusso di esecuzione atteso.

Figura 1. Class diagram web application
Class diagram web application

Come vediamo dal diagramma, il controller ha un'istanza di BankAccountLocalHome, cioè la home locale attraverso la quale recuperare istanze di BankAccountLocal. In questo caso utilizziamo le interfacce locali in quanto la web application sarà installata sotto lo stesso application server che contiene gli EJB. Questo modo di fare è auspicabile in quanto la comunicazione avviene nello stesso spazio di memoria (chiamate locali) e non attraverso la rete (chiamate remote), quindi l'accesso è molto più rapido e sicuro.

Per poter fruire dell'interfaccia locale, sarà necessario definire il corretto descrittore di deploy: l'operazione varia in base all'application server, ma generalmente si tratta di inserire l'informazione nel descrittore di deploy del server. Se utilizzate Jboss, accanto al descrittore ejb-jar.xml ci sarà il descrittore jboss.xml, che conterrà:

Listato 1. Descrittore jboss.xml

<?xml version="1.0" encoding="UTF-8"?>
<jboss>
  <enterprise-beans>
    <entity>
      <ejb-name>BankAccount</ejb-name>
      <jndi-name>BankAccount</jndi-name>
      <local-jndi-name>BankAccountLocal</local-jndi-name>
    </entity>
  </enterprise-beans>
</jboss>

In pratica, nel precedente listato, vengono ridefiniti i nomi (remoto e locale) da utilizzare nel servizio di naming per riferirsi all'ejb. Quindi, visto che vogliamo utilizzare il bean in locale, faremo riferimento a BankAccountLocal.

Come già detto nei precedenti capitoli è bene utilizzare gli entity bean all'interno di session bean: questioni di performance e di sicurezza. In questo esempio utilizzeremo, per ragioni di semplicità, direttamente i metodi esposti dagli ejb.

Dando un'occhiata alla servlet (Controller.java), possiamo vedere come il riferimento alla home locale venga creato nel metodo di inizializzazione. Il Context non ha bisogno di parametri in quanto, per default, verranno recuperati quelli del container in cui si troverà installato. I metodi presenti seguono semplicemente il flusso di controllo previsto. Il recupero dell'account viene svolto sulla base del parametro di identificazione, e su di esso si effettua l'operazione (deposito o prelievo).

Le operazioni di creazione e di ricerca hanno vita dalla pagina index.html (vedi listato) con la presenza di due form che rimandano alla servlet. In particolare, l'operazione di ricerca, effettua la ricerca e recupera il BankAccountLocal relativo alla chiave passata. Questo oggetto viene inoltrato dalla request alla pagina home.jsp, che si ritroverà la variabile account, valorizzata con l'account appena cercato.

La pagina home.jsp (vedi listato) si occuperà quindi di visualizzare il contenuto dell'account, utilizzando i metodi getter del bean. Inoltre abbiamo inserito due form che consentono di effettuare le operazioni di deposito e prelievo (sempre attraverso la servlet).

Ti consigliamo anche