1. Introduzione
1.1. Panoramica
Il PDF di questo documento è |QUI|.
Gli esempi contenuti in questo documento sono disponibili |QUI|.
In questa sede, intendiamo presentare, utilizzando esempi
- il framework Java Server Faces 2 (JSF2),
- la libreria di componenti PrimeFaces per JSF2, per applicazioni desktop e mobili.
Questo documento è destinato principalmente a studenti e sviluppatori interessati alla libreria di componenti PrimeFaces [http://www.primefaces.org]. Questo framework offre decine di componenti abilitati per AJAX [http://www.primefaces.org/showcase/ui/home.jsf] che consentono di creare applicazioni web con un aspetto simile a quello delle applicazioni desktop. PrimeFaces si basa su JSF2, da qui la necessità di introdurre prima questo framework. PrimeFaces offre anche componenti specifici per dispositivi mobili. Tratteremo anche questi ultimi.
Per illustrare il nostro punto di vista, realizzeremo un'applicazione per la pianificazione degli appuntamenti in diversi ambienti:
- una classica applicazione web che utilizza le tecnologie JSF2 / EJB3 / JPA su un server GlassFish 3.1,
- la stessa applicazione con supporto AJAX, utilizzando la tecnologia PrimeFaces,
- e infine, una versione mobile che utilizza la tecnologia PrimeFaces Mobile.
Ogni volta che verrà creata una versione, la distribuiremo in un ambiente JSF2 / Spring / JPA su un server Tomcat 7. Realizzeremo quindi sei applicazioni Java EE.
Questo documento tratta solo ciò che è necessario per creare queste applicazioni. Pertanto, non aspettatevi che sia esaustivo: qui non lo troverete. Né si tratta di una raccolta di best practice. Gli sviluppatori esperti potrebbero ritenere che avrebbero agito in modo diverso. Spero semplicemente che questo documento non sia nemmeno una raccolta di cattive pratiche.
Per saperne di più su JSF2 e PrimeFaces, potete consultare il seguente riferimento :
Di tanto in tanto faremo riferimento a [ref2] per segnalare al lettore che può approfondire l'argomento consultando questo libro.
Questo documento è stato redatto in modo da essere accessibile al pubblico più ampio possibile. I prerequisiti per comprenderlo sono i seguenti:
- conoscenza del linguaggio Java,
- conoscenza di base dello sviluppo Java EE.
Tutte le risorse necessarie per soddisfare questi prerequisiti sono disponibili sul sito web [https://developpez.com]. Alcune di esse sono disponibili sul sito web [https://stahe.github.io]:
1.2. Esempio
Gli esempi in questo documento sono disponibili |QUI| come progetti Maven sia per NetBeans che per Eclipse:
Per importare un progetto in NetBeans:
- In [1], aprire un progetto,
- in [2], seleziona il progetto da aprire nel file system,
- in [3], si apre.
Con Eclipse,
- in [1], importare un progetto,
- in [2], il progetto è un progetto Maven esistente,
- in [3]: lo selezioni nel file system,
- in [4]: Eclipse lo riconosce come progetto Maven,
- in [5], il progetto importato.
1.3. Strumenti utilizzati
Andando avanti, stiamo utilizzando (a maggio 2012):
1.3.1. Installazione dell'IDE NetBeans
Qui descriviamo l'installazione di NetBeans 7.1.2, disponibile all'URL [http://netbeans.org/downloads/].
È possibile scegliere la versione Java EE con GlassFish 3.1.2 o Apache Tomcat 7.0.22. La prima consente di sviluppare applicazioni Java EE con EJB3 (Enterprise JavaBeans), mentre la seconda permette di sviluppare applicazioni Java EE senza EJB. Successivamente sostituiremo gli EJB con il framework Spring [http://www.springsource.com/].
Una volta scaricato il programma di installazione di NetBeans, eseguirlo. Per farlo, è necessario disporre di un JDK (Java Development Kit) [http://www.oracle.com/technetwork/java/javase/overview/index.HTML]. Oltre a NetBeans 7.1.2, installare:
- il framework JUnit per i test unitari,
- il server GlassFish 3.1.2,
- il server Tomcat 7.0.22.
Una volta completata l'installazione, avvia NetBeans:
- in [1], NetBeans 7.1.2 con tre schede:
- la scheda [Progetti] mostra i progetti NetBeans aperti;
- la scheda [File] mostra i vari file che compongono i progetti NetBeans aperti;
- la scheda [Servizi] raggruppa una serie di strumenti utilizzati dai progetti NetBeans,
- in [2], selezionare la scheda [Servizi] e in [3], selezionare la sezione [Server];
- in [4], avvia il server Tomcat per verificare che sia installato correttamente,
- in [6], nella scheda [Apache Tomcat] [5], è possibile verificare che il server sia stato avviato correttamente,
- In [7], arrestare il server Tomcat,
Seguire gli stessi passaggi per verificare che il server GlassFish 3.1.2 sia installato correttamente:
- In [8], avvia il server GlassFish,
- In [9], verifica che sia stato avviato correttamente,
Ora disponiamo di un IDE completamente funzionante. Possiamo iniziare a creare progetti. Man mano che lavoreremo su questi progetti, esploreremo le varie funzionalità dell'IDE.
Ora installeremo l'IDE Eclipse e registreremo i due server — Tomcat 7 e GlassFish 3.1.2 — che abbiamo appena scaricato al suo interno. Per farlo, dobbiamo conoscere le directory di installazione di questi due server. Queste informazioni si trovano nelle proprietà di questi due server:
- in [1], la cartella di installazione di Tomcat 7,
- in [2], la cartella dei domini del server GlassFish. Quando si registra GlassFish in Eclipse, sarà sufficiente fornire le seguenti informazioni [D:\Programs\devjava\Glassfish\glassfish-3.1.2\glassfish].
1.3.2. Installazione dell'IDE Eclipse
Sebbene Eclipse non sia l'IDE utilizzato in questo documento, ne descriveremo comunque l'installazione. Questo perché gli esempi nel documento sono forniti anche come progetti Maven per Eclipse. Eclipse non viene fornito con Maven preinstallato. Per farlo è necessario installare un plugin. Anziché installare una versione base di Eclipse, noi di installeremo SpringSource Tool Suite [http://www.springsource.com/developer/sts], una versione di Eclipse preconfigurata con numerosi plugin relativi al framework Spring e con una configurazione Maven preinstallata.
- Visita il sito web di SpringSource Tool Suite (STS) [1] per scaricare la versione attuale di STS [2A] [2B].
- Il file scaricato è un programma di installazione che crea la struttura di directory [3A] [3B]. In [4], avviamo l'eseguibile,
- in [5], l'area di lavoro dell'IDE dopo aver chiuso la finestra di benvenuto. In [6], viene visualizzata la finestra dei server delle applicazioni,
- in [7], la finestra dei server. È registrato un server. Si tratta di un server VMware che non useremo. In [8], apriamo la procedura guidata per l'aggiunta di un nuovo server,
- in [9A], vengono proposti vari server. Scegliamo di installare un server Apache Tomcat 7 [9B],
- in [10], specifichiamo la directory di installazione per il server Tomcat 7 installato con NetBeans. Se non si dispone di un server Tomcat, utilizzare il pulsante [11],
- in [12], il server Tomcat appare nella finestra [Servers],
- in [13], avviamo il server,
- in [14], è in esecuzione,
- in [15], lo fermiamo.
Nella finestra [Console], se tutto funziona correttamente, dovresti vedere i seguenti log di Tomcat:
| mai 26, 2012 8:56:51 AM org.apache.catalina.core.AprLifecycleListener init
Infos: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: ...
mai 26, 2012 8:56:55 AM org.apache.coyote.AbstractProtocol init
Infos: Initializing ProtocolHandler ["http-bio-8080"]
mai 26, 2012 8:56:55 AM org.apache.coyote.AbstractProtocol init
Infos: Initializing ProtocolHandler ["ajp-bio-8009"]
mai 26, 2012 8:56:55 AM org.apache.catalina.startup.Catalina load
Infos: Initialization processed in 4527 ms
mai 26, 2012 8:56:55 AM org.apache.catalina.core.StandardService startInternal
Infos: Démarrage du service Catalina
mai 26, 2012 8:56:55 AM org.apache.catalina.core.StandardEngine startInternal
Infos: Starting Servlet Engine: Apache Tomcat/7.0.22
mai 26, 2012 8:56:57 AM org.apache.catalina.util.SessionIdGenerator createSecureRandom
Infos: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [218] milliseconds.
mai 26, 2012 8:56:57 AM org.apache.coyote.AbstractProtocol start
Infos: Starting ProtocolHandler ["http-bio-8080"]
mai 26, 2012 8:56:57 AM org.apache.coyote.AbstractProtocol start
Infos: Starting ProtocolHandler ["ajp-bio-8009"]
mai 26, 2012 8:56:57 AM org.apache.catalina.startup.Catalina start
Infos: Server startup in 2252 ms
|
 |
- Sempre nella finestra [Servers], aggiungi un nuovo server [16],
- in [17], il server Glassfish non è elencato,
- in questo caso, utilizzare il link [18],
- in [19], scegliere di aggiungere un adattatore per il server GlassFish,
- questo verrà scaricato, quindi tornare alla finestra [Servers] e aggiungere un nuovo server,
- questa volta in [21], i server GlassFish sono elencati,
- in [22], selezionare il server GlassFish 3.1.2 scaricato con NetBeans,
- in [23], specificare la cartella di installazione di GlassFish 3.1.2 (prestare attenzione al percorso indicato in [24]),
- se non si dispone di un server GlassFish, utilizzare il pulsante [25],
- in [26], la procedura guidata richiede la password di amministratore del server GlassFish. Per una prima installazione, questa è normalmente adminadmin,
- una volta terminata la procedura guidata, il server GlassFish appare nella finestra [Servers] [27],
- in [28], avviarlo,
- in [29], potrebbe presentarsi un problema. Ciò dipende dalle informazioni fornite durante l'installazione. GlassFish richiede un JDK (Java Development Kit) e non un JRE (Java Runtime Environment),
- per accedere alle proprietà del server GlassFish, fare doppio clic su di esso nella finestra [Servers],
- il che apre la finestra [20]; lì, seguire il link [Runtime Environment],
- in [31], sostituiremo il JRE predefinito con un JDK. Per farlo, utilizzare il link [32],
- in [33], i JRE installati sul computer,
- in [34], aggiungerne un altro,
- In [35], selezionare [Standard VM] (Macchina virtuale),
- in [36], selezionare un JDK (>=1.6),
- in [37], inserisci un nome per il nuovo JRE,
- Tornando alla schermata di selezione del JRE per GlassFish, selezionare il nuovo JRE specificato in [38],
- una volta completata la procedura guidata di configurazione, riavviare [GlassFish] [39],
- in [40], si avvia,
- in [41], l'albero delle directory del server,
- in [42], accediamo ai log di GlassFish:
| ...
Infos: Running GlassFish Version: GlassFish Server Open Source Edition 3.1.2 (build 23)
Infos: Grizzly Framework 1.9.46 started in: 125ms - bound to [0.0.0.0:7676]
Infos: Grizzly Framework 1.9.46 started in: 125ms - bound to [0.0.0.0:3700]
Infos: Grizzly Framework 1.9.46 started in: 188ms - bound to [0.0.0.0:8080]
Infos: Grizzly Framework 1.9.46 started in: 141ms - bound to [0.0.0.0:4848]
Infos: Grizzly Framework 1.9.46 started in: 141ms - bound to [0.0.0.0:8181]
Infos: Registered org.glassfish.ha.store.adapter.cache.ShoalBackingStoreProxy for persistence-type = replicated in BackingStoreFactoryRegistry
Infos: GlassFish Server Open Source Edition 3.1.2 (23) heure de démarrage : Felix (13 790 ms), services de démarrage (2 028 ms), total (15 818 ms)
Infos: JMX005: JMXStartupService had Started JMXConnector on JMXService URL service:jmx:rmi://Gportpers3.ad.univ-angers.fr:8686/jndi/rmi://Gportpers3.ad.univ-angers.fr:8686/jmxrmi
|
 |
- In [43], arrestiamo il server Glassfish.
1.3.3. Installazione di [ WampServer]
[WampServer] è una suite di software per lo sviluppo in PHP/MySQL/Apache su un computer Windows. Lo useremo esclusivamente per il DBMS MySQL.
- Sul sito web di [WampServer] [1], scegli la versione appropriata [2],
- il file eseguibile scaricato è un programma di installazione. Durante l'installazione vengono richieste varie informazioni. Queste non riguardano MySQL, quindi possono essere ignorate. Al termine dell'installazione appare la finestra [3]. Avvia [WampServer],
- in [4], l'icona [WampServer] appare nella barra delle applicazioni in basso a destra dello schermo [4],
- quando si fa clic su di essa, appare il menu [5]. Consente di gestire il server Apache e il DBMS MySQL. Per gestire quest'ultimo, utilizzare l'opzione [PhpMyAdmin],
- che apre la finestra mostrata di seguito,

Forniremo pochi dettagli sull'uso di [PhpMyAdmin]. Mostreremo semplicemente come utilizzarlo per creare il database per l'applicazione di esempio in questo tutorial.