2010-03-19 4 views
0

Я пытаюсь импортировать следующий веб-службу: http://www.biomart.org/biomart/martwsdlИмпорт WebService:

Использованием завитка для службы getResistry(): все в порядке:

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 

возвращается:

<?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> 
(...) 

ОК.

Но когда эта услуга генерируется с использованием CXF/wsdl2java (или даже 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 

сгенерированный клиент возвращает пустой список для getRegistry():

Invoking getRegistry... 
getRegistry.result=[] 

почему? что мне делать, чтобы этот код работал?

Большое спасибо

Пьер

+0

Пожалуйста показать код в MartServiceSoap_BioMartSoapPort_Client.java, основной метод, в частности, с последующим местом, где вы вызываете службу. – shivaspk

+0

@shivaspk MartServiceSoap_BioMartSoapPort_Client.java был сгенерирован CXF/wsdl2java с использованием опции -client. – Pierre

+0

Его единственный класс заглушки, который он генерирует, все, что он делает, это создать эквиваленты Java для операций WSDL, вам нужно написать простую java-программу для вызова операции getRegitry(). – shivaspk

ответ

0

В классе клиента есть основной метод, в котором вы выполнили операцию getRegistry.

Это может выглядеть следующим образом

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

Извините и забыл упомянуть, а затем скомпилировать и запустить этот клиентский класс с помощью javac и java. – shivaspk

+0

извините, но клиент, созданный CXF/wsdl2java **, ** генерирует ** основной ** метод, а код содержит вызов getRegistry(). java.util.List <org.biomart._80.martservicesoap.Mart> _getRegistry__return = port.getRegistry(); System.out.println ("getRegistry.result =" + _getRegistry__return); – Pierre