PDA

View Full Version : [Java] Client web service senza classi stub


Abdujaparov
31-10-2007, 11:45
Salve a tutti sto cercando di scrivere, sfruttando le librerie axis, un client per un web service installato su jboss. Mi interessa scriverlo senza l'utilizzo delle classi stub (con quelle ci sono riuscito senza problemi).
Il web service jboss è così definito:
@WebService
@SOAPBinding(style = SOAPBinding.Style.RPC)

il metodo del webservice che devo invocare è così dichiarato:
@WebMethod
public double fattoriale(int numero){
........
}

Io avevo provato a scrivere il mio client in questo modo:

String servizio="Tesi";

String endpoint = "http://localhost:8080/"+servizio;

Service service = new Service();

Call call = (Call) service.createCall();

call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.addParameter("arg0", XMLType.XSD_INT, ParameterMode.IN);
call.setOperationName("fattoriale");
call.setReturnType(XMLType.XSD_DOUBLE);

Object[] param = new Object[] {new Integer(6)};

String risultato = call.invoke(param)+""; //Qui mi da errore


System.out.println(risultato);


Quando provo ad eseguirlo però mi viene restituito questo errore:

Endpoint {http://tesi/}TesiPort does not contain operation meta data for: fattoriale
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at ClientWebServiceDinamico.main(ClientWebServiceDinamico.java:43)

Come sbaglio nella scrittura del mio client?
Cosa devo correggere?
Grazie a tutti, ciao ciao.

isAlreadyInUse
31-10-2007, 11:48
Ti posto il codice di un cliend che ho fatto io, vedi se ti puo essere utile

String ret = "";
try {
String endpoint = Utility.inifile.getStringProperty("SETTINGS", "endpoint");
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName(new QName("http://soapinterop.org/", "logIn"));
ret = (String) call.invoke(new Object[] { username, pwd });
} catch (Exception e) {
System.err.println(e.toString());
}
return ret;

Abdujaparov
01-11-2007, 12:51
Ciao grazie per l'aiuto ma ho sempre lo stesso errore, cosa devo modificare?
Grazie a tutti, ciao ciao.