venerdì 19 luglio 2013

Exception in thread "main" java.lang.NoSuchMethodError: javax.xml.ws.WebFault.messageName()Ljava/lang/String

Questo errore si è verificato nell'interrogazione di un web service scritto utilizzando JAX-WS 2.2.8
su un Tomcat 7 con la jdk 1.6.
Il problema è che di default la jdk 1.6 utilizza JAX.WS 2.1 e  l'attributo messageName sulla annotation javax.xml.ws.WebFault è stato introdotto solo con la versione JAX WS 2.2.
Per risolverlo ho utilizzato il sistema delle librerie endorsed di Tomcat.
I passi da seguire sono abbastanza semplici.
Bisogna creare una directory denominata endorsed dentro la root di Tomcat,tipicamente allo stesso livello della cartella webapps.
Qui dentro bisogna inserire i 2 jar (versione 2.2 ovviamente):

  • jaxb-api.jar;
  • jaxws-api.jar

Occorre poi verificare che la variabile java.endorsed.dirs punti correttamente alla nostra directory.
Ad esempio nei parametri di start up del servizio (nel tab java se lanciamo l'utiliti tomcat7w.exe //ES//nomeServizio) assicuriamoci che ci sia il seguente settaggio:

 -Djava.endorsed.dirs=D:\lavoro\apache-tomcat-7.0.3\endorsed

Nessun commento:

Posta un commento