Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

RESTful Web Services in Java con Jersey, il progetto

Sviluppiamo un progetto con Jersey, il framework Java che consente di sviluppare ed interrogare i servizi RESTful utilizzando il formato JSON.
Sviluppiamo un progetto con Jersey, il framework Java che consente di sviluppare ed interrogare i servizi RESTful utilizzando il formato JSON.
Link copiato negli appunti

Il progetto Java: Maven, Jersey, Jetty, Tomcat

Per gestire il nostro progetto sfrutteremo Maven. Quindi da terminale eseguiamo il comando:

$ mvn -B archetype:generate \
	-DarchetypeArtifactId=maven-archetype-webapp \
	-DgroupId=it.html.tutorial.library \
	-DartifactId=library

Nella directory library è stato creato il nostro progetto con alcune directory di base. Eliminiamo /src/main/webapp/WEB-INF/ ed aggiungiamo /src/main/java/, ne approfondiremo le motivazioni più avanti.

Procediamo con l'aggiunta della dipendenza a Jersey. Editiamo il file pom.xml, presente nella directory principale del nostro progetto ed aggiungiamo all'interno del tag <dependencies> le righe:

<dependency>
	<groupId>org.glassfish.jersey.containers</groupId>
	<artifactId>jersey-container-servlet</artifactId>
	<version>2.23.2</version>
</dependency>
<dependency>
	<groupId>org.glassfish.jersey.media</groupId>
	<artifactId>jersey-media-moxy</artifactId>
	<version>2.23.2</version>
</dependency>

Inoltre dobbiamo configurare il progetto per consentire l'utilizzo di Jetty. All'interno dei tag <build> aggiungiamo il plugin di Jetty.

<plugins>
	<plugin>
		<groupId>org.eclipse.jetty</groupId>
		<artifactId>jetty-maven-plugin</artifactId>
		<version>9.3.11.v20160721</version>
		<configuration>
			<scanIntervalSeconds>10</scanIntervalSeconds>
		</configuration>
	</plugin>
	<plugin>
		<groupId>org.apache.maven.plugins</groupId>
		<artifactId>maven-war-plugin</artifactId>
		<version>2.3</version>
		<configuration>
			<failOnMissingWebXml>false</failOnMissingWebXml>
		</configuration>
	</plugin>
	<plugin>
		<groupId>org.apache.maven.plugins</groupId>
		<artifactId>maven-compiler-plugin</artifactId>
		<version>3.5.1</version>
		<configuration>
			<source>1.8</source>
			<target>1.8</target>
		</configuration>
	</plugin>
</plugins>

A questo punto possiamo iniziare a compilare il progetto in modo da scaricare le dipendenze configurate e verificare che sia tutto funzionante. Da terminale eseguiamo:

$ mvn package

Il comando package scarica le dipendenze e le installa sul repository Maven locale. Ciò consentirà di avviare il progetto con Jetty tramite il comando:

$ mvn jetty:run

Non ci resta che verificare che il progetto sia up-and-running. Se tutto è andato per il verso giusto, collegandoci alla URL:

http://localhost:8080

dovremmo visualizzare la pagina "Hello World!":

Nella cartella target/ troveremo il file library.war, cioè il compilato del nostro progetto che potremmo utilizzare per il deploy su un Application Server come Tomcat.

Approfondimenti

In prima istanza abbiamo creato lo scheletro del progetto con Maven in modalità non interattiva passando l'opzione -B, specificando quindi le opzioni tramite riga di comando. Il progetto Maven viene gestito tramite file pom.xml. POM sta per Project Object Model, un progetto Maven è descritto attraverso di esso: informazioni generali, dipendenze, processo di compilazione e fasi secondarie come la generazione di documentazione. Maven crea la struttura delle directory di base, navigando il progetto troveremo infatti:

  • /src/main/webapp
  • /src/main/resources

La prima contiene i sorgenti Web, i file JSP, HTML, JS e la directory WEB-INF, con il file web.xml il deployment descriptor del progetto Java. Quest'ultimo possiamo eliminarlo in quanto utilizzeremo la specifica delle Servlets 3.0, sfruttando quindi le annotation. La seconda directory contiene le risorse che vogliamo rendere disponibili all'interno dell'applicazione: file di testo e properties di configurazione. Per ospitare il codice sorgente delle classi java abbiamo aggiunto la directory /src/main/java/.

Successivamente abbiamo editato il file pom.xml di Maven lavorando sulla dipendenze. La prima dipendenza è l'implementazione del core di Jersey per la specifica delle Servlets 3.x. La seconda è il modulo che fornisce il supporto alle entità JSON, MOXy che utilizzeremo.

Abbiamo poi aggiunto il plugin di Jetty che ci consentirà un test rapido in fase di sviluppo. Esso effettua periodicamente uno scan del progetto per verificare eventuali cambiamenti ed eventualmente riesegue il deploy in automatico. Jetty fornisce una serie di goal fra cui jetty:run per l'avvio del progetto. Per vedere tutti i goal Maven messi a disposizione dal plugin Jetty è possibile usare:

mvn jetty:help

Inoltre abbiamo aggiunto il plugin che si occupa della generazione del pacchetto WAR specificando di non sollevare errori non trovando il file web.xml, ed il plugin che si occupa della compilazione impostando il target di compilazione alla versione di Java 1.8.

Prima di avviare Jetty abbiamo però eseguito la phase package che serve a compilare il progetto e produrre il pacchetto a seconda delle informazioni specificate nel file di configurazione.

Ti consigliamo anche