Passa al contenuto principale

Servizio Web Multi-Applicativo

In questo tutorial creeremo un servizio web multi-applicativo per Netuno. Ciò significa che creeremo un servizio web in Java che resterà nella directory di base di Netuno e potrà essere utilizzato da qualsiasi applicazione all'interno della cartella apps.

L'esempio che creeremo, seguendo i tutorial precedenti, è il servizio calcolo, che è un servizio di esempio che esegue semplici operazioni aritmetiche.

Per iniziare, è prima necessario creare la struttura delle cartelle del progetto. In questo esempio considereremo che il progetto verrà creato all'interno di una cartella chiamata Calcolo. Quindi è necessario creare la struttura delle cartelle che rispecchia il nome del package (nel nostro esempio, org.netuno.addon.calcolo). La nostra struttura delle cartelle sarà quindi:

  • Calcolo/src/main/java/org/netuno/addon/calcolo/web/

All'interno di questa struttura creeremo una classe Java chiamata CalcoloWeb, che definirà il nostro servizio web personalizzato:

  • Calcolo/src/main/java/org/netuno/addon/calcolo/web/CalcoloWeb.java

Il package definito nella classe sarà quindi:

package org.netuno.addon.calcolo.web;

Per fare in modo che la classe definisca un servizio web multi-applicativo personalizzato, deve estendere la classe org.netuno.tritao.Web:

package org.netuno.addon.calcolo.web;

import org.netuno.tritao.Web;

public class CalcoloWeb extends Web {
// ...
}

Per definire l'URL del servizio, fai:

package org.netuno.addon.calcolo.web;

import org.netuno.proteu.Path;
import org.netuno.tritao.Web;

@Path("/addon/calcolo/Calcolo")
public class CalcoloWeb extends Web {
// ...
}

Il metodo da sovrascrivere affinché il servizio funzioni è il metodo run:

package org.netuno.addon.calcolo.web;

import org.netuno.proteu.Path;
import org.netuno.proteu.ProteuException;
import org.netuno.tritao.Web;

import java.io.IOException;

@Path("/addon/calcolo/Calcolo")
public class CalcoloWeb extends Web {
@Override
public void run() throws IOException, ProteuException {
// ...
}
}

Definiamo quindi, usando alcune risorse di Netuno, il metodo run in modo che riceva il parametro operazione, che stabilirà quale operazione usare tra piu (addizione) e meno (sottrazione), e i parametri x e y che saranno gli operandi (addendi nel caso dell'addizione, minuendo e sottraendo rispettivamente nel caso della sottrazione).

Poi, in base all'operazione scelta, il nostro servizio calcolerà il risultato e lo restituirà all'utente in formato JSON:

package org.netuno.addon.calcolo.web;

import org.netuno.proteu.Path;
import org.netuno.proteu.ProteuException;
import org.netuno.tritao.Web;
import org.netuno.tritao.resource.Out;
import org.netuno.tritao.resource.Req;
import org.netuno.tritao.resource.Val;

import java.io.IOException;

@Path("/addon/calcolo/Calcolo")
public class CalcoloWeb extends Web {
@Override
public void run() throws IOException, ProteuException {
Req richiesta = resource(Req.class);
Out uscita = resource(Out.class);
Val valore = resource(Val.class);

String operazione = richiesta.getString("operazione", "piu");
double x = richiesta.getDouble("x", 0);
double y = richiesta.getDouble("y", 0);

double risultato = 0;

if (operazione.equalsIgnoreCase("meno")) {
risultato = x - y;
} else {
risultato = x + y;
}

uscita.json(valore.map().set("risultato", risultato));
}
}

Ora non resta che compilare la classe, assicurandoti che il file CalcoloWeb.class si trovi nella cartella:

  • netuno/core/web/WEB-INF/classes/org/netuno/addon/calcolo/web/

Oppure produrre un file JAR, assicurandoti che si trovi nella cartella:

  • netuno/lib/

Avvia il server Netuno con qualsiasi applicazione:

./netuno server app=demo

Per effettuare chiamate a questo servizio, è necessario aggiungere .netuno alla fine dell'URL:

  • http://localhost:9000/addon/calcolo/Calcolo.netuno

Ad esempio, se effettui una chiamata a:

  • http://localhost:9000/addon/calcolo/Calcolo.netuno?operazione=meno&x=5&y=2

Riceverai in risposta:

{"risultato":3}

Puoi vedere i file completi del progetto in questo link.

Nel prossimo tutorial impareremo come creare una risorsa di Netuno usando Java.