2009-02-23 5 views
1

Je passe en revue les premiers exemples du nouveau livre Java Web Services: Up and Running. J'ai essayé de passer par l'exemple de client SOAP pour Java à la page 13, mais dans Groovy.Impossible d'appeler un service Web depuis Groovy

Alors, voici mon code shell Groovy:

import javax.xml.namespace.QName 
import javax.xml.ws.Service 
import java.net.URL 

url = new URL("http://someURL?wsdl") 
qname = new QName("http://someURL", "SomeURLImplService") 
service = Service.create(url, qname) 

Mais cela échoue avec cette erreur:

ERROR groovy.lang.MissingMethodException: No signature of method: \ 
static javax.xml.ws.Service.create() is applicable for argument types: \ 
(java.net.URL, javax.xml.namespace.QName) values: {http://someURL?wsdl, \ 
{http://someURL}SomeURLImplService} 

Je ne comprends pas, puisque Groovy me dit cette méthode avec cette signature ne fait existent:

groovy:000> Service.class.getMethods().each {println it} 
public static javax.xml.ws.Service \ 
javax.xml.ws.Service.create(java.net.URL,javax.xml.namespace.QName) 
... 

Est-ce que quelqu'un sait ce que je fais mal ici?

Répondre

2

J'ai essayé d'exécuter votre code sans modifications et cela a fonctionné correctement pour moi. Votre problème peut être lié à la version Java ou au chemin de classe. Le fichier javax.xml.ws (JAX-WS) n'est qu'une partie de Java SE commençant par Java 6. Si vous n'exécutez pas ce test en Java 6, cela pourrait être votre problème. Ce n'est probablement pas votre problème puisque si vous ne l'étiez pas, je ne m'attendrais pas à ce que vous soyez capable de résoudre ces interfaces.

L'autre chose que cela pourrait être un problème de classpath. Les fournisseurs JAX-WS externes peuvent être connectés à l'environnement d'exécution Java. Avez-vous quelque chose sur votre chemin de classe qui est le fournisseur JAX-WS? Peut-être que c'est une version antérieure.

+0

Cela fonctionne aussi bien pour moi. – chanwit

1

J'ai réessayé en téléchargeant Groovy manuellement (au lieu d'utiliser la distribution fournie avec Ubuntu). Maintenant ça marche. Allez comprendre.