Dettagli sull'applicazione Web Auction |
L'esempio applicazione Web Auction è stato sviluppato utilizzando SDP (Software Development Platform) versione 6.0. In questo documento vengono identificati i blocchi di costruzione chiave dell'applicazione Web Auction, che sono illustrati nel seguente diagramma. Vi sono molti componenti nell'applicazione Web Auction. Non si tratta di un'esercitazione su come realizzare l'intera applicazione. In questo documento vengono evidenziati importanti aspetti dello sviluppo e della progettazione, attività per le quali è possibile avvalersi dei diversi strumenti forniti con il workbench appositamente per la creazione di applicazioni Web. Come illustrato nel diagramma precedente, il contenuto Web è stato sviluppato in parallelo alla logica dati e business. Anche se i Web designer hanno sviluppato lo stile e il layout delle pagine Web, gli sviluppatori di servizi Web e Java hanno creato il codice per la logica business alla base di queste pagine. Nelle sezioni elencate di seguito verrà illustrato in che modo questi componenti chiave sono stati creati e quale contributo essi offrono all'applicazione Web Auction:
Associazione dei bean di entità alle tabelle di database con l'editor Associazioni EJBEJB (Enterprise JavaBeans) offre un modo comodo per applicazioni Java per accedere ai dati contenuti nei database relazionali. I bean di entità possono essere sviluppati utilizzando BMP (bean-managed persistence) o CMP (container-managed persistence). CMP consente una maggiore flessibilità rispetto a BMP, in quanto il contenitore EJB effettua tutte le chiamate specifiche del database, sulla base delle istruzioni del bean. Per impostazione predefinita, gli strumenti nel workbench di Rational generano bean di entità utilizzando CMP. Il bean di entità CMP non contiene codice SQL di accesso. Ciò consente di distribuire il bean su altri server J2EE che utilizzano database differenti, senza alcun bisogno di riscrivere il codice Esistono approcci differenti per associare oggetti ai database relazionali: top-down, bottom-up e meet-in-the-middle. Un approccio top-down si basa sugli oggetti esistenti, quindi definisce in maniera sempre più dettagliata i successivi livelli sulla base delle esigenze, quindi, come fase finale, progetta i database. L'approccio bottom-up utilizza uno schema di database esistente, quindi progetta i livelli dipendenti che definiscono gli oggetti. L'approccio meet-in-the-middle utilizza un database esistente e gli oggetti esistenti, quindi sviluppa i livelli intermedi per associare gli oggetti alle tabelle di database corrispondenti. L'applicazione Auction ha utilizzato un approccio bottom-up nello sviluppo degli EJB di entità. Il database Cloudscape esisteva inizialmente e conteneva le tabelle appropriate per gli EJB. Dopo aver creato una connessione al database utilizzando la procedura Guidata Connessione al database, è stata utilizzata la procedura guidata Associazione EJB a RDB per creare EJB di cui viene eseguita l'associazione da una o più tabelle, con alcune eccezioni. La seguente figura mostra gli EJB di entità utilizzati nell'applicazione Auction e le relazioni che esistono tra loro. Non è possibile accedere ai bean di entità nell'applicazione Auction direttamente dal client remoto. Tutte le richieste e le risposte vengono gestite dai session facade e i bean vengono utilizzati per accedere ai dati di back-end. Ciò consente l'accesso condiviso sul lato server all'archivio dati persistenti. Nella sezione successiva verranno descritti in maniera più dettagliata i session facade. Per ulteriori informazioni sull'associazione dei bean di entità, consultare l'argomento della guida Generazione di un'associazione bottom-up. Generazione di un session facade con oggetti dati SDO utilizzando la procedura guidata session bean facadeIl session facade è l'interfaccia tra il client e il back-end che fornisce la comunicazione ai componenti SDO (Service Data Object) e al database. Un session facade è utile quando il client invia richieste che richiedono l'esecuzione di numerosi oggetti. L'invio di queste richieste singolarmente agli oggetti può incrementare la latenza e il traffico di rete. Il session facade funge da buffer tra due estremi, accettando una richiesta generale dal client, quindi inviando specifiche richieste agli oggetti necessari. In tal modo, si riduce il traffico e si semplifica lo sviluppo del client. Dopo aver creato il facade, è possibile selezionare gli EJB che gestisce scegliendo l'opzione Associa EJB dal menu dello strumento. Il facade genera i componenti SDO necessari dai bean di entità. Nell'applicazione Auction ci sono due facade, basati sui due gruppi funzionali elencati di seguito:
Raggruppando gli EJB e utilizzando due facade differenti, è possibile incrementare le prestazioni dell'applicazione perché gli utenti accedono solo agli EJB di cui hanno bisogno. I bean di entità che controllano la funzione del sito Web, come Category, sono controllati dal system facade. Gli EJB a cui fa riferimento un facade vengono scelti uno per volta, utilizzando la procedura guidata Crea bean di aspetto di sessione, come mostrato nel seguente diagramma. Se necessario, è possibile fare riferimento a un EJB in più di un facade. Questo approccio non è stato adottato nell'applicazione Auction.È possibile aggiungere ulteriori funzioni aggiungendo metodi ai facade. Ad esempio, nello user facade, esiste un metodo che restituisce un elenco di utenti e un altro metodo che restituisce un elenco degli utenti attivi. Utilizzando questi metodi come esempio, è possibile aggiungere un altro metodo allo user facade che restituisce un elenco di tutti gli utenti che sono contrassegnati come non attivi. Ulteriori informazioni sui session facade sono disponibili nel documento "Design Patterns: Session Facade" all'indirizzo java.sun.com. Definizione del layout del sito Web con Web Site DesignerLa vista Navigazione dello strumento Web Site Designer fornisce una rappresentazione del layout del sito. Mostra le singole pagine e la loro organizzazione gerarchica ed è utile per mantenere il layout e l'organizzazione delle pagine del sito. Quando si trascinano le pagine nell'editor, i controlli di Navigazione nei modelli pagina vengono aggiornati automaticamente. Ad esempio, con la struttura di navigazione di Auction mostrata nel seguente diagramma, è possibile modificare l'ordine delle schede di navigazione spostando la pagina Sell prima di quella Browse. Web Site Designer genera automaticamente le schede nell'ordine corretto in tutte le pagine. Per apportare modifiche visibili all'applicazione in esecuzione, salvare di nuovo ogni pagina che utilizza il modello di navigazione.Oltre alla vista Navigazione appena descritta, Web Site Designer fornisce una vista Dettagli che organizza gli elementi delle pagine aggiuntivi in una comoda tabella modificabile, come illustrato nella seguente figura. Questa tabella agevola l'aggiornamento delle proprietà delle pagine, come titolo, l'autore e l'etichetta di navigazione. ![]() Per ulteriori informazioni sull'utilizzo di Web Site Designer per gestire il layout del sito Web, consultare l'argomento della Guida in linea Creazione della struttura del sito Web. Creazione di modelli pagina Web con Page DesignerIl workbench presenta un designer visivo per lo sviluppo di modelli pagina e per le stesse pagine Web. I modelli pagina sono pezzi di codice di contenuto riutilizzabile che forniscono un aspetto o una funzionalità comune per le sezioni di un sito Web. Per condividere lo stesso aspetto, è sufficiente che le pagine Web facciano riferimento ai modelli. L'utilizzo di modelli avvantaggia sia l'utente, che può navigare agevolmente all'interno del sito Web, che lo sviluppatore, il quale deve scrivere solo codice specifico per una determinata pagina. I modelli pagina semplificano anche la gestione del contenuto del sito Web. Le modifiche al file di modello vengono riprodotte automaticamente in tutte le pagine che vi fanno riferimento. Ad esempio, nell'applicazione Web Auction, il modello maintemplate.jtpl, fornisce il layout generale delle pagine Auction. Elementi delle pagine Web possono essere aggiunti al modello utilizzando la tavolozza di Page Designer, che consente di trascinare e rilasciare elementi nella pagina Web. Il codice HTML richiesto viene generato automaticamente. In tal modo, è possibile apportare agevolmente modifiche al modello Auction per includere, ad esempio, la data e l'ora corrente a piè di pagina. Gli elementi chiave del modello Auction sono i controlli per la navigazione. La barra di navigazione dell'applicazione Web Auction utilizza due tipi di navigazione:
Inserendo un tag che richiama il modello anziché eseguire l'hard-coding della navigazione, è possibile includere la medesima barra di navigazione in tutte le pagine del sito. L'editor Associazione modelli inserisce riferimenti al modello in una pagina Web. Con i modelli dinamici, questa tecnologia è più complessa: ad esempio, è possibile modificare il contenuto delle pagine Web sulla base del ruolo o delle capacità degli utenti oppure è possibile inserire informazioni specifiche dell'utente in una pagina Web. L'esempio Auction utilizza modelli dinamici per fornire collegamenti amministrativi nella barra di navigazione solo per quegli utenti collegati come amministratore e per fare in modo che il pulsante "Login" si modifichi in "Logout" dopo che l'utente si è collegato. Per ulteriori informazioni sulla creazione di modelli per pagine Web, consultare l'argomento della Guida Creazione di un modello pagina. Aggiunta di componenti JavaServer Faces ai file JSP con Page DesignerJavaServer Faces (JSF) è una tecnologia che agevola la realizzazione di interfacce utente per applicazioni Web dinamiche che vengono eseguite su server delle applicazioni. JSF è un linguaggio di standard aperti e utilizza una libreria di tag standard JavaServer Faces. I tag vengono inseriti nel codice HTML per creare pagine Web dinamiche. Il framework JSF gestisce gli stati dell'interfaccia utente tra una richiesta e l'altra del server e offre un semplice modello di sviluppo per gestire gli eventi del lato server che vengono attivati dal client. Ad esempio, un JSF può avere un comportamento specifico per i diversi eventi: ad esempio, la selezione di un pulsante. Page Designer dispone di funzioni integrate, visualizzate sulla tavolozza e che è possibile trascinare nella pagina Web. Queste funzioni di trascinamento rendono più semplice l'uso di JSF, HTML e di altri elementi di script. Ciò è utile non solo per controllare le funzioni di base di un campo, come il tipo di valore di un campo di testo (intero, alfanumerico), ma consente anche l'impostazione delle regole di convalida. In Page Designer, i controlli JSF possono essere collegati ai dati SDO associati a ciascuna pagina. La tavolozza di Page Designer può essere utilizzata per aggiungere ulteriori funzioni alle pagine JSF. Ad esempio, è possibile aggiungere un pulsante "Buy It Now" alla pagina dei dettagli sugli articoli per consentire a un utente di comprare l'articolo al prezzo fissato dal venditore. La seguente immagine mostra i controlli JSF per la pagina dei dettagli dell'applicazione Auction. Al campo di testo newbid è applicato un limite perché accetti solo numeri interi con la casella di controllo Integer only, come illustrato nell'angolo in basso a destra della figura. Questo campo presenta ulteriori impostazioni (Validation, Behavior e Accessibility) come definito nelle schede in h:inputText nell'angolo in basso a sinistra della figura. La scheda Validation è il punto in cui vengono definite le regole di convalida specifiche utilizzando Java. Ad esempio, un input valido per il campo di testo newbid è un numero intero che non sia null, che sia maggiore dell'offerta iniziale e che sia maggiore dell'offerta corrente di un dollaro.Il codice riportato di seguito è stato generato per il campo newbid inputText nella pagina itemdetails dell'applicazione Auction. <h:inputText styleClass="inputText" id="newbid" required="true" size="14"> <f:convertNumber integerOnly="true" /> <f:validateLongRange minimum="#{pc_Itemdetail.userFacadeLocalGetFindHighestBidResultBean==null ? pc_Itemdetail.userFacadeLocalGetBidItemSDOByKeyResultBean.startingbid : pc_Itemdetail.userFacadeLocalGetFindHighestBidResultBean.currentbid+1}"> </f:validateLongRange> </h:inputText> Per ulteriori informazioni sullo sviluppo di file Faces JSP, consultare l'argomento della Guida relativo a JavaServer Faces. Creazione di un'interfaccia utente Swing con l'editor visivo JavaOltre alle pagine Web, l'applicazione Auction dispone di un client Java Swing che consente agli amministratori di gestire informazioni utente come nomi e password. L'utilizzo di un client Swing fa sì che tutta l'elaborazione venga eseguita sulla macchina del client; in tal modo, si riducono i tempi di attesa associati alle applicazioni Web. Il client User Admin visualizza tutti gli utenti dell'applicazione. L'amministratore può interagire con i dati degli utenti e gestire i loro specifici attributi, senza dover attendere che la pagina Web si ricarichi. Inoltre, un client Swing fornisce anche un'interfaccia più semplice e maggiormente orientata alle applicazioni. L'applicazione del client Swing è stata sviluppata con l'editor visivo Java come mostrato di seguito. Utilizzando l'editor visivo, è possibile sviluppare la propria applicazione da un punto di vista visivo, mentre il codice viene generato automaticamente. In tal modo, è possibile ridurre la scrittura manuale di complicato codice Swing. ![]() Questa figura mostra l'applicazione User Admin all'interno dell'editor visivo Java. I blocchi sulla destra sono i session facade, i quali utilizzano oggetti SDO per accedere alla logica business. Le linee continue che collegano questi blocchi al progetto dell'interfaccia sono associati a eventi specifici nell'interfaccia utente. Le linee tratteggiate mostrano quali parametri vengono inviati agli oggetti SDO e i valori che essi restituiscono. Lo sviluppo di quest'applicazione in maniera visiva è molto più rapido della scrittura di complicato codice Java Swing e facilita le modifiche all'interfaccia utente. L'interfaccia di User Admin è stata creata direttamente nell'editor Java visivo. I nuovi componenti Swing possono essere selezionati dalla tavolozza e aggiunti all'applicazione. Qualunque componente può essere personalizzato per ottenere l'aspetto desiderato utilizzando gli strumenti, le procedure guidate fornite e il feedback e le proprietà nel foglio delle proprietà. Inoltre, i componenti che possono mostrare il contenuto come tabelle e campi di testo possono essere associati per mostrare i dati forniti da un'origine dati. Dopo aver sviluppato l'applicazione User Admin, occorre distribuirla sul sito Web. L'applicazione User Admin completata viene inserita in un file EAR e inserita nella struttura di directory del sito Web. Script e risorse HTML aggiuntive vengono create per distribuire correttamente l'applicazione via WebStart, come specificato nella documentazione del software WebSphere Application Client fornito con il prodotto WebSphere Application Server. Le risorse che vengono eseguite sul lato client presentano un certificato per motivi di sicurezza. Dopo aver eseguito tutte le operazioni di impostazione e configurazione necessarie descritte nella documentazione, l'applicazione è pronta per la distribuzione su un client con solo un browser e Java WebStart. Dopo aver creato i componenti dell'applicazione Web, l'applicazione Web Auction viene distribuita ed eseguita su un server delle applicazioni. Vi sono ulteriori componenti nell'applicazione Auction disponibili nella Galleria di esempi. Per ulteriori informazioni, consultare l'argomento della Guida relativo alla modifica Java nell'editor visivo. Creazione del servizio WebIl servizio Web è stato sviluppato in parallelo all'applicazione Web perché non dipende dall'applicazione Web: il servizio Web rappresenta un altro modo per accedere alla logica business e non include tutta la funzionalità dell'applicazione Web. Consultare la sezione Servizio Web per una descrizione più dettagliata di questo componente dell'applicazione Auction. |