2010-03-19 13 views
0

Je suis en train d'importer le service Web suivant: http://www.biomart.org/biomart/martwsdlImporter un Webservice:

En utilisant boucle pour le service getResistry(): tout est OK:

curl --header 'Content-Type: text/xml' --data '<?xml version="1.0"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:mar="http://www.biomart.org:80/MartServiceSoap"> 
<soapenv:Header/> 
    <soapenv:Body> 
     <mar:getRegistry/> 
    </soapenv:Body> 
</soapenv:Envelope>' http://www.biomart.org:80/biomart/martsoap 

il retourne:

<?xml version="1.0" encoding="UTF-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.o 
rg/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/ 
envelope/" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 
    <soap:Body> 
    <getRegistryResponse xmlns="http://www.biomart.org:80/MartServiceSoap"> 
     <mart> 
     <name xsi:type="xsd:string">ensembl</name> 
     <displayName xsi:type="xsd:string">ENSEMBL GENES 57 (SANGER UK)</displayName> 
     <database xsi:type="xsd:string">ensembl_mart_57</database> 
(...) 

OK.

Mais quand ce service est généré à l'aide CXF/wsdl2java (ou même wsimport)

mkdir src 
wsdl2java -keep -d src -client "http://www.biomart.org/biomart/martwsdl" 
javac -g -d src -sourcepath src src/org/biomart/_80/martservicesoap/MartServiceSoap_BioMartSoapPort_Client.java 
java -cp src org.biomart._80.martservicesoap.MartServiceSoap_BioMartSoapPort_Client 

le client généré renvoie une vide liste pour getRegistry():

Invoking getRegistry... 
getRegistry.result=[] 

pourquoi? que dois-je faire pour que ce code fonctionne?

Un grand merci

Pierre

+0

S'il vous plaît montrer le code MartServiceSoap_BioMartSoapPort_Client.java, la principale méthode suivie en particulier par l'endroit où vous appelez le service. – shivaspk

+0

@shivaspk MartServiceSoap_BioMartSoapPort_Client.java a été généré par CXF/wsdl2java en utilisant l'option '-client'. – Pierre

+0

C'est seulement une classe de souche ce qu'elle génère, tout ce qu'elle fait est de créer des équivalents java des opérations WSDL, vous devez écrire un simple programme java pour appeler l'opération getRegitry(). – shivaspk

Répondre

0

Dans la classe client ont une méthode principale dans laquelle vous invoquez le fonctionnement getRegistry.

Il peut ressembler à ceci

MartServiceSoap_BioMartSoapPort_Client client = new MartServiceSoap_BioMartSoapPort_Client(); 
System.out.println(client.getRegistry()); 
+0

Désolé et oublié de mentionner, puis compilez et exécutez cette classe client en utilisant javac et java. – shivaspk

+0

Désolé, mais le client généré par CXF/wsdl2java ** génère ** une méthode ** main ** et le code contient un appel à getRegistry(). java.util.List <org.biomart._80.martservicesoap.Mart> _getRegistry__return = port.getRegistry(); System.out.println ("getRegistry.result =" + _getRegistry__return); – Pierre