problema webservice - metodi non possono durare più di 1 parametro
-
13-09-2019 - |
Domanda
sto usando IntelliJ IDEA 8 e Asse di istituire un webservice che è distribuito su tomcat5.5. Il WSDL generato è simile al seguente: http://track.priskick.se/Tracker.wsdl
Un metodo è dichiarato come
public void storeImpressionReport(int siteId, int adId, int zoneId, int count,
int excludeCount) { ... }
ed esposto nel webservice. Avanti, costruisco il cliente (anche Java) con Axis, ma come una chiamata runtime per il metodo è fatta con i parametri 0,0,0,0,0
, ottengo questo:
Tried to invoke method public void com.xxxxx.xxxx.xxxx.xxxxx.storeImpressionReport(int,int,int,int,int) with arguments java.lang.Integer,null,null,null,null. The arguments do not match the signature.; nested exception is: java.lang.IllegalArgumentException
La riduzione del numero dei parametri del metodo a 1 lo fa funzionare, ma questo si sente come una limitazione abbastanza stupido e strano comportamento. Please help me se sai quello che potrebbe essere sbagliato qui - perché non posso esporre i metodi e li prendono più di un parametro?
=== UPDATE
Ora provato che genera il Java client utilizzando WSDL generato da IntelliJ invece di chiamare il servizio con l'opzione wsdl?. Questo WSDL mantiene i nomi dei parametri corretti, forse perché il generatore ha accesso alla fonte. Ora ho
No tale operazione 'SiteID' AxisFault
Questi sono i file relativi: http://track.priskick.se/Tracker/TrackerSoapBindingStub.java http://track.priskick.se/Tracker/TrackerServiceTestCase.java http://track.priskick.se/Tracker/Tracker_PortType.java http://track.priskick.se/Tracker/TrackerService.java http://track.priskick.se/Tracker/TrackerServiceLocator.java
il WSDL utilizzato per il cliente si trova in http://track.priskick.se/Tracker.wsdl
il servizio si trova in http://stage.klikki.com/services/Tracker
Saluti Marcus Johansson
Soluzione
Oh, la gioia. Ho cambiato lo stile di servizio per AVVOLTO, e questo sembra aver risolto il problema.