Primi Passi con JAX-WS

JAX-WS è la specifica di JEE6 per la realizzazione di web-service in java. Essa definisce le annotazioni che possono essere utilizzate. Il JDK ne fornisce una implementazione in JAX-WS RI. JbossWS è l’implementazione di JAX-WS fornita dal container JBoss ed è spesso utilizzata quando si ha la necessità di supportare altri standard, come ad esempio  WS-Security, WS-ReliableMessaging, etc. Apache CFX ne è una ulteriore implementazione.

Generazione della Web Application

L’approccio migliore per creare una nuova applicazione che fornisce dei servizi web (SOAP) con JAX-WS per il container JBoss è quello di utilizzare Maven e l’archetype jaxws-codefirst fornito da JBossWS. Allo scopo portiamoci quindi nella cartella dove intendiamo creare il nostro progetto ed eseguiamo il seguente comando Maven, avendo cura di modificare i parametri groupId, artifactId e package a proprio piacimento:

Importiamo il progetto appena generato nel nostro IDE di riferimento (ad esempio Eclipse) ed ispezioniamo rapidamente il file pom.xml. Nella sezione plugins troviamo i seguenti plugin:

  • jaxws-tools-maven-plugin: utilizzato sia per la generazione del WSDL (wsprovider) che per la generazione dello stub client (wsconsume).

  • maven-surefire-plugin: utilizzato per l’esecuzione dei test distinguendo tra la fase di test unitario (unit-test), eseguita subito dopo la compilazione, e la fase di test di integrazione (integration-test), eseguita dopo che l’applicazione è stata deployata.

  • maven-war-plugin: utilizzato per il packaging dell’applicativo in un archivio war.

L’Esempio HelloWorld

Il progetto così generato contiene un end-point webservice di esempio implementato nella classe HelloWorldImpl che implementa l’interfaccia HelloWorld ed espone due semplici servizi: sayHigreetings.

Il riferimento alla classe HelloWorldImpl è anche presente nella configurazione del plugin wsprovider del pom.xml al fine di specificare per quale interfaccia generare il WSDL. Si noti comunque che tale documento è anche generato da JBoss a seguito del deploy dell’applicazione.

Per la compilazione ed il deploy del servizio è sufficiente eseguire i seguenti comandi maven:

  • mvn clean compile
  • mvn wildfly:deploy

Il primo esegue la compilazione del progetto utilizzando il plug-in maven-compiler-plugin, mentre il secondo esegue il deploy su JBoss utilizzando il plug-in org.wildfly.plugins, entrambi definiti nel pom.xml. Ovviamente JBoss deve essere attivo per poter eseguire il tast di deploy.

Per verificare il corretto deploy del servizio è sufficiente aprire il browser ed inserire l’url http://localhost:8080/jaxws-webapp/HelloWorldService?wsdl. Alternativamente è possibile utilizzare il tool SoapUI creando un nuovo progetto SOAP associato all’url del WSDL. In figura è mostrato un esempio di chiamata al servizio greatings():

Codice Sorgente

Il codice sorgente dell’applicazione è disponibile qui jaxws-webapp.