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.
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.