Dettagli sull'applicazione Web Asta

L'applicazione Web Asta è basata su diversi componenti, illustrati nel seguente diagramma. Questo documento non è un'esercitazione per la creazione dell'intera applicazione, ma evidenzia i punti principali dello sviluppo e della progettazione mediante gli strumenti forniti con il workbench, in modo da poter applicare le conoscenze acquisite alle proprie applicazioni Web.

Questo diagramma mostra le relazioni tra i dati, la logica commerciale, il contenuto Web e gli strumenti.
Come mostra il precedente diagramma, il contenuto Web è stato sviluppato parallelamente ai dati e alla logica commerciale. Mentre i progettisti Web hanno sviluppato lo stile e il layout delle pagine Web, gli sviluppatori dei servizi Web e Java hanno codificato la logica commerciale per attivare tali pagine. Nelle sezioni seguenti viene descritto come sono stati creati questi componenti chiave, e il loro contributo all'applicazione Web Asta:
  1. Associazione di bean entità alle tabelle di database con l'editor di associazione EJB
  2. Generazione di una facade di sessione con oggetti dati SDO mediante la procedura guidata Aspetto bean di sessione
  3. Definizione del layout del sito Web con Web Site Designer
  4. Creazione di modelli di pagina con Page Designer
  5. Aggiunta di componenti JavaServer Faces alle pagine JSP con Page Designer
  6. Creazione del servizio Web

Associazione di bean entità alle tabelle di database con l'editor di associazione EJB

EJB (Enterprise JavaBeans) offre un modo comodo per consentire alle applicazioni Java di accedere ai dati contenuti nei database relazionali. I bean entità possono essere sviluppati mediante BMP (Bean-Managed Persistence) o CMP (Container-Managed Persistence). CMP offre maggiore flessibilità rispetto a BMP perché il contenitore EJB effettua le chiamate specifiche del database, indirizzate dal bean. Per impostazione predefinita, gli strumenti presenti nel workbench Rational generano bean entità mediante CMP. Il bean entità CMP non contiene accesso al codice SQL. Ciò consente di distribuire il bean su altri server J2EE che utilizzano database differenti, senza dover riscrivere il codice.

Esistono diversi approcci per associare oggetti ai database relazionali, ad esempio il metodo dall'alto verso il basso, dal basso verso l'alto e quello centrale. Con un approccio dall'alto verso il basso si parte dagli oggetti esistenti, si definiscono livelli sempre più dettagliati e si progetta il database come passo finale. Con l'approccio dal basso verso l'alto viene utilizzato uno schema di database esistente e vengono quindi progettati i livelli dipendenti, che definiscono gli oggetti. Con l'approccio centrale vengono utilizzati un database esistente e oggetti esistenti, quindi vengono sviluppati i livelli intermedi per associare gli oggetti alle tabelle di database corrispondenti.

Nell'applicazione Asta è stato utilizzato un approccio dal basso verso l'alto per sviluppare gli EJB entità. Il database Derby esisteva inizialmente e conteneva tabelle che corrispondevano esattamente agli EJB necessari. Una volta creata una connessione utilizzando la procedura guidata Connessione al database, è stata utilizzata la procedura guidata Associazione EJB a RDB per creare EJB da associare da una o più tabelle, con alcune eccezioni. Nella seguente figura sono illustrati gli EJB entità utilizzati nell'applicazione Asta, e le relazioni che li collegano.

In questo diagramma viene mostrata la relazione tra diversi bean entità.

Ai bean entità nell'applicazione Asta non si accede direttamente dal client remoto. Tutte le richieste e le risposte vengono gestite dalle facade di sessione e i bean vengono utilizzati per accedere ai dati di back-end. Ciò consente l'accesso condiviso dal lato server per la memoria dati persistente. Nella sezione successiva vengono discusse le facade in maniera più approfondita.

Per ulteriori informazioni sull'associazione dei bean entità, consultare l'argomento della guida Generazione di un'associazione dal basso verso l'alto.

Generazione di una facade di sessione con oggetti dati SDO mediante la procedura guidata Aspetto bean di sessione

La facade di sessione è l'interfaccia tra il cliente e il back-end che fornisce la comunicazione ai componenti SDO (Service Data Object) e, in definitiva, al database. Una facade di sessione è utile quando il client invia le richieste per cui sono necessari numerosi oggetti da eseguire. L'invio delle singole richieste agli oggetti può determinare un aumento del traffico e della latenza di rete. La facade di sessione funge da buffer tra i due punti finali, acquisendo una richiesta generale dal client e inviando quindi richieste specifiche agli oggetti necessari. Ciò riduce il traffico e semplifica lo sviluppo del client.

Una volta creata la facade, è possibile selezionare gli EJB che essa gestisce selezionando Associa EJB dal menu nello strumento. La facade genera i componenti SDO necessari dai bean entità. Nell'applicazione Asta, esistono due facade, a seconda dei seguenti gruppi funzionali:
  • La facade del sistema si interfaccia con il back-end, gli EJB specifici del sistema, ad esempio Categoria e Ruolo.
  • La facade utente racchiude i dati specifici dell'utente, ad esempio Offerta, Articolo e Ruolo.

Raggruppando gli EJB e utilizzando due diverse facade, è possibile aumentare le prestazioni dell'applicazione perché gli utenti accedono solo agli EJB necessari. I bean entità che controllano la funzione del sito Web stesso, ad esempio Categoria, sono controllati dalla facade di sistema.

Gli EJB a cui fa riferimento una facade vengono scelti contemporaneamente, utilizzando la procedura guidata Crea facade bean di sessione, come mostrato nel seguente diagramma. Se necessario, un riferimento a un EJB può essere presente in più facade. Nell'applicazione Asta, ciò non è stato fatto.

Questo diagramma mostra l'interfaccia utente di Crea facade bean di sessione.

È possibile aggiungere ulteriori funzioni aggiungendo metodi alle facade. Ad esempio, nella facade utente, esiste un metodo che restituisce un elenco di utenti e un altro metodo che restituisce un elenco di utenti attivi. Utilizzando questi metodi come esempio, è possibile aggiungere alla facade utente un altro metodo che restituisce un elenco di tutti gli utenti contrassegnati come non attivi.

Ulteriori informazioni sulle facade di sessione possono essere reperite nel documento "Design Patterns: Session Facade" al seguente indirizzo http://java.sun.com./.

Definizione del layout del sito Web con Web Site Designer

La vista Navigazione dello strumento Web Site Designer fornisce una rappresentazione visiva del layout del sito. Mostra le singole pagine e la relativa organizzazione gerarchica ed è utile per gestire il layout e l'organizzazione delle pagine all'interno del sito. Quando si trascinano e si rilasciano le pagine nell'editor, i controlli della navigazione nei modelli di pagina vengono aggiornati automaticamente. Ad esempio, con la struttura di navigazione di Asta mostrata nel seguente diagramma, è possibile modificare l'ordine delle schede di navigazione spostando la pagina Sell prima della pagina Sfoglia. Web Site Designer genera automaticamente le schede nell'ordine corretto su tutte le pagine. Per rendere visibili le modifiche nell'applicazione in esecuzione, salvare nuovamente ogni pagina che utilizza il modello di navigazione.

Questo diagramma mostra l'aspetto dei JSP di Asta in Web Site Designer.

Oltre alla vista Navigazione appena descritta, Web Site Designer fornisce una vista Dettagli che organizza ulteriori elementi della pagina in una comoda tabella modificabile, come mostrato nella figura successiva. In tal modo viene facilitato l'aggiornamento delle proprietà della pagina, quali titolo, autore ed etichette di navigazione.

Questi diagrammi mostrano la vista dettagli di Web Site Designer.

Per ulteriori informazioni sull'utilizzo di Web Site Designer per gestire il layout del sito Web, far riferimento all'argomento Creazione della struttura del sito nella guida in linea.

Creazione di modelli di pagina Web con Page Designer

Il workbench viene fornito con un programma di progettazione visiva per lo sviluppo di modelli di pagina, oltre alle pagine stesse.

I modelli di pagina sono porzioni riutilizzabili di codice con cui viene assegnato aspetto e comportamento comuni a più sezioni di un sito Web. Per condividere l'aspetto e la funzionalità, le pagine Web devono semplicemente fare riferimento ai modelli. L'utilizzo di modelli è vantaggioso sia per l'utente, che può navigare nel sito Web con facilità, sia per lo sviluppatore, che deve semplicemente scrivere un codice specifico per un tipo particolare di pagina.

I modelli di pagina, inoltre, consentono una più facile manutenzione del contenuto del sito Web. Le modifiche effettuate al file del modello vengono riflesse automaticamente in ogni pagina che ad esso fa riferimento. Ad esempio, nell'applicazione Web Asta, il modello maintemplate.jtpl fornisce il layout generale delle pagine Asta. Gli elementi di una pagina Web possono essere aggiunti al modello utilizzando la tavolozza in Page Designer, che consente di trascinare e rilasciare elementi sulla pagina Web. Il codice HTML viene generato automaticamente. Il modello Asta in tal modo può essere modificato con facilità, ad esempio per includere data e ora nel piè di pagina.

Gli elementi chiave nel modello Asta sono i controlli della navigazione. La barra di navigazione dell'applicazione Web Asta utilizza due moduli di navigazione:
  • Schede di navigazione, che visualizzano differenti sezioni del sito Web.
  • Sezioni di navigazione, o "breadcrumb", che visualizzano testualmente la posizione dell'utente nel sito Web, ad esempio Home > Sfoglia > Elenco.
Questo diagramma mostra le schede di navigazione che appaiono nelle pagine di esempio di Asta.

Inserendo una scheda che richiama il modello invece che la codifica della navigazione, è possibile includere la stessa barra di navigazione in tutte le pagine del sito. L'editor di associazione modelli inserisce in una pagina Web i riferimenti al modello.

I modelli dinamici migliorano ulteriormente questa tecnologia, ad esempio alterando il contenuto della pagina Web basato su ruoli o funzionalità degli utenti, o inserendo specifiche informazioni per gli utenti in una pagina Web. L'esempio Asta utilizza modelli dinamici per fornire collegamenti amministrativi nella barra di navigazione solo per gli utenti che hanno accesso in qualità di amministratori, e per modificare il pulsante da "Accesso" a "Uscita" dopo che l'utente ha effettuato l'accesso regolarmente.

Per ulteriori informazioni sulla creazione di modelli di pagina Web, far riferimento all'argomento della guida Creazione di un modello pagina.

Aggiunta di componenti JavaServer Faces a file JSP con Page Designer

JSF (JavaServer Faces) è una tecnologia che facilita la creazione di interfacce utente per applicazioni Web dinamiche che vengono eseguite su un server di applicazioni. JSF è uno linguaggio standard aperto e utilizza una libreria tag standard JavaServer Faces. Le tag vengono inserite nel codice HTML per creare pagine Web dinamiche.

La struttura JSF gestisce gli stati dell'interfaccia utente in base alle richieste del server e offre un modello di sviluppo semplice per utilizzare eventi dal lato server attivati dal client. Ad esempio, un JSF può avere un comportamento specifico per differenti eventi, ad esempio il clic su un pulsante. Page Designer comprende funzioni integrate, visualizzate nella tavolozza, che è possibile trascinare e rilasciare nella pagina Web. Queste funzioni a trascinamento e rilascio facilitano notevolmente l'utilizzo di JSF, HTML e altri elementi di script. Ciò si rivela particolarmente utile non solo per controllare le funzioni di base di un campo, ad esempio il tipo di valore di un campo di testo (numero intero, carattere alfanumerico), ma anche per impostare regole di convalida. In Page Designer, i controlli JSF possono essere vincolati ai dati SDO associati a ciascuna pagina.

La tavolozza di Page Designer può essere utilizzata per aggiungere ulteriori funzioni alle pagine JSF. Ad esempio, un pulsante "Compra adesso" può essere aggiunto alla pagina di dettagli di un articolo per consentire all'utente di comprare l'articolo al valore impostato dal venditore.

La seguente figura mostra i controlli JSF per la pagina di dettagli di Asta. Il campo inputText per una nuova offerta viene limitato in modo che accetti solo numeri interi con la casella di verifica Solo numeri interi, come mostrato nell'angolo inferiore destro della figura. Il campo inputText prevede ulteriori impostazioni per Convalida, Comportamento e Accessibilità, come definito nelle schede al di sotto di h:inputText nella parte inferiore sinistra della figura. Nella scheda Convalida vengono definite regole di convalida specifiche utilizzando Java. Ad esempio, un input valido per il campo inputText per una nuova offerta è un numero intero diverso da zero, maggiore dell'offerta iniziale e maggiore dell'offerta attuale più uno.

Questo diagramma mostra i controlli JSF utilizzati nella pagina dei dettagli di Asta.

Il seguente codice è stato generato per il campo inputText newbid nella pagina itemdetails dell'applicazione Asta.

<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 JSP, fare riferimento all'argomento della guida relativo a JavaServer Faces.

Creazione del servizio Web

Il servizio Web è stato sviluppato in parallelo con l'applicazione Web poiché non dipende dall'applicazione Web: il servizio Web rappresenta un altro mezzo per accedere alla logica commerciale, e non include tutte le funzionalità dell'applicazione Web. Per una descrizione più approfondita di questa parte dell'applicazione Asta, consultare la sezione relativa al servizio Web.

Organizzazione dei progetti di Asta

L'applicazione Web Asta dispone di un certo numero di progetti. Ogni progetto ha uno specifico utilizzo. Il seguente elenco descrive i singoli progetti e il relativo utilizzo nell'esempio Asta:
  • Il progetto AuctionV60EAR è il file EAR (Enterprise Archive) principale che è distribuito sul server di applicazioni. Questo progetto è necessario per l'ambiente di runtime.
  • Il progetto AuctionV60EJB contiene classi facade ed EJB.
  • Il progetto AuctionV60EJBClient contiene il codice generato, comprese le classi SDO, ed è distribuito sul client.
  • Il progetto AuctionV60Web contiene tutti i file JSF, i modelli e la logica commerciale per l'esecuzione dei file JSF.
  • Il progetto AuctionV60WebService contiene i file WSDL del servizio Web e l'origine Java per il servizio Web.
  • I progetti OIDGenerator e OIDGeneratorClient sono necessari per la creazione di nuove chiavi da inserire nel database.
Argomento principale: Applicazione Web Asta

Feedback