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

CMP - Client Java

Client java usato per testare l'anagrafica clienti
Client java usato per testare l'anagrafica clienti
Link copiato negli appunti

Come al solito, dopo aver effettuato il deploy del componente, effettuiamo un test di unità per vederne il funzionamento. Come detto più volte, per questioni di performance è bene sempre prevedere dei session bean come wrapper di entity bean, ma per questi semplici esempi non ci preoccupiamo di questo aspetto.

Listato 1. Crezione dell'ambiente di esecuzione dell'ejb

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);

Come prima cosa, creiamo l'ambiente di esecuzione da cui recuperare le risorse attraverso l'interrogazione della struttura dati JNDI.

Listato 2. Recupero Home remota

UserHome uh=(UserHome) ctx.lookup("User");

//Creazione di alcune entry
try {
  uh.create("squake", "Pasquale", "Congiusti", "oldmail@html.it", "3111234567");
  uh.create("nonnap", "Nonna", "Papera", "npapera@paperiscali.it", "KLD - 555 - 123");
  uh.create("giusgar", "Giuseppe", "Garibaldi", "g.garibaldi@1000.it", "000 - 111");
} catch (LoginException e) {
  System.out.println(e.getMessage());
} catch (Exception e) {
  e.printStackTrace();
}

Dopo aver recuperato la home remota (che utilizzeremo in tutto l'esempio), creiamo una serie di voci che in seguito interrogheremo.

Listato 3. Creiamo delle voci che interrogheremo in futuro

try {
  //Cerco l'utente
  User user=uh.findByPrimaryKey("squake");
  //e visualizzo le informazioni
  System.out.println("Utente #"+user.getLogin()+" - "+user.getNome()+" "+user.getCognome()+", "
      +user.getEmail()+", "+user.getTelefono());
  //Cambio delle informazioni
  user.setEmail("newmail@html.it");
  //Mostriamo di nuovo le informazioni
  System.out.println("Utente #"+user.getLogin()+" - "+user.getNome()+" "+user.getCognome()+", "
      +user.getEmail()+", "+user.getTelefono());
} catch (RemoteException e) {
  e.printStackTrace();
} catch (FinderException e) {
  System.out.println("Non esiste nessun utente - squake");
}

La prima è un'operazione di ricerca sulla chiave primaria. Sulla base della primary key scelta, recuperiamo l'utente ed effettuiamo operazioni di modifica.

Come ultima operazione, effettuiamo la visualizzazione di tutti i dati presenti nella tabella User.

Listato 4. Mostriamo tutti gli utenti del database

System.out.println("Dump database");
Collection c;
try {
  c = uh.findAll();
  Iterator i=c.iterator();
  while(i.hasNext()){
    User user=(User) i.next();
    System.out.println("Utente #"+user.getLogin()+" - "+user.getNome()+" "+user.getCognome()+", "
        +user.getEmail()+", "+user.getTelefono());
  }
} catch (RemoteException e) {
  e.printStackTrace();
} catch (FinderException e) {
  System.out.println("Nessun utente trovato!");
}

Lato server vediamo che i metodi load e store (sincronizzazione con il database) sono richiamati molto spesso. Le opzioni avanzate degli application server consentono peraltro una gestione più efficiente attraverso il meccanismo di caching dei dati (di cui non discuteremo in questa guida, in quanto operazione dipendente dal server).

Figura 1. CMP: risultato dell'esecuzione del test
CMP: risultato dell'esecuzione del test

Ti consigliamo anche