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

BMP - Client Java

Un client java standalone per testare la funzionalità del conto corrente bancario
Un client java standalone per testare la funzionalità del conto corrente bancario
Link copiato negli appunti

Per testare i singoli componenti creati (test di unità) creeremo un'opportuna classe java che funga da client e utilizzeremo alcuni dei metodi previsti dal bean per valutarne la correttezza. Il test ha molto valore, in particolar modo per i componenti BMP, in cui, il codice per gestire le operazioni di sincronizzazione con il database è notevole.

Vediamo allora il metodo main della classe.

Listato 1. Metodo main della classe

..//
Properties props=new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
props.put(Context.PROVIDER_URL, "jnp://localhost:1099");
Context ctx=new InitialContext(props);

BankAccountHome bah = (BankAccountHome) PortableRemoteObject.narrow(ctx.lookup("BankAccount"), BankAccountHome.class);

Come prima cosa, al solito, creeremo il context, a partire dal quale recupereremo tutti i servizi necessari all'esecuzione del componente. Immediatamente dopo ci faremo restituire un'istanza di BankAccountHome, a partire dalla quale creeremo i dati (o li troveremo con i metodi finder).

Supponiamo che il database sia vuoto. Quindi invochiamo sulla classe home il metodo create per creare alcuni account di prova.

Listato 2. Creazione di una serie di account

bah.create("AAAA-0000-0001", "Zio Paperone");
bah.create("AAAA-0000-0002", "Nonna Papera");
bah.create("AAAA-0000-0003", "Orso Yoghi");
bah.create("AAAA-0000-0004", "Paperino");

Dopo aver effettuato questa operazione, potremo osservare la presenza delle nuove voci nella tabella del database. Ora, testiamo i metodi di business, per vedere se tutto fila liscio. Diciamo che il primo account decide di effettuare alcune operazioni di deposito e poi di prelievo. Come sappiamo, per poter utilizzare un account, non dovremo invocare l'operazione di create (che solleverebbe un'eccezione per valori duplicati), ma l'operazione finder (passando come riferimento il codice del conto).

Listato 3. Ricerchiamo l'account di zio paperone e facciamo delle operazioni

BankAccount ba;
try {
  ba = bah.findByPrimaryKey(new AccountPK("AAAA-0000-0001"));
  
  System.out.println(ba.getNome()+" ha deciso di fare un deposito...");
  ba.deposito(25000);
  System.out.println(ba.getNome()+" ha deciso di fare un deposito...");
  ba.deposito(3000);
  System.out.println(ba.getNome()+" ha deciso di fare un prelievo...");
  ba.prelievo(22000);
  System.out.println("Saldo "+ba.getNome()+": "+ba.getSaldo());
} catch (FinderException e1) {
  System.out.println("Nessun account trovato!");
}

Vediamo che, se l'account viene trovato, verranno effettivamente svolte le operazioni.

Figura 1. Esecuzione del client di test
Esecuzione del client di test

Dopo due depositi di 25000 e 3000, e un prelievo di 22000, il saldo del primo account sarà di 6000, come giustamente ci attendiamo. Interessante sarà osservare direttamente il database e vedere che la persistenza è correttamente sincronizzata (come peraltro si può vedere dalla consolle di jboss, dove risalta la presenza dei metodi ejbStore()).

Ti consigliamo anche