A question.... does the ejb provider extend the RPC provider? That is.... is 
the call done always in RPC style?

---------- Initial Header -----------

>From      : "angeloimm" [EMAIL PROTECTED]
To          : "Axis Axis" axis-user@ws.apache.org
Cc          :
Date      : Thu, 21 Apr 2005 10:15:32 +0200
Subject : faultString: No such operation

> Hi all; i have a session bean as a web service.  This is the wsdl file:
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions targetNamespace="http://ejbs.websrv.napsi.eng.it"; 
> xmlns:apachesoap="http://xml.apache.org/xml-soap"; 
> xmlns:impl="http://ejbs.websrv.napsi.eng.it"; 
> xmlns:intf="http://ejbs.websrv.napsi.eng.it"; 
> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"; 
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; 
> xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"; 
> xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
> <!--WSDL created by Apache Axis version: 1.2beta3
> Built on Aug 01, 2004 (05:59:22 PDT)-->
>
>    <wsdl:message name="byFamilyCodeResponse">
>
>       <wsdl:part name="byFamilyCodeReturn" type="apachesoap:Document"/>
>
>    </wsdl:message>
>
>    <wsdl:message name="toponomasticResponse">
>
>       <wsdl:part name="toponomasticReturn" type="apachesoap:Document"/>
>
>    </wsdl:message>
>
>    <wsdl:message name="byFiscalCodeResponse">
>
>       <wsdl:part name="byFiscalCodeReturn" type="apachesoap:Document"/>
>
>    </wsdl:message>
>
>    <wsdl:message name="updateRequest">
>
>       <wsdl:part name="input" type="apachesoap:Document"/>
>
>    </wsdl:message>
>
>    <wsdl:message name="byFamilyCodeRequest">
>
>       <wsdl:part name="input" type="apachesoap:Document"/>
>
>    </wsdl:message>
>
>    <wsdl:message name="toponomasticRequest">
>
>       <wsdl:part name="input" type="apachesoap:Document"/>
>
>    </wsdl:message>
>
>    <wsdl:message name="byUserDataRequest">
>
>       <wsdl:part name="input" type="apachesoap:Document"/>
>
>    </wsdl:message>
>
>    <wsdl:message name="byFiscalCodeRequest">
>
>       <wsdl:part name="doc" type="apachesoap:Document"/>
>
>    </wsdl:message>
>
>    <wsdl:message name="byUserDataResponse">
>
>       <wsdl:part name="byUserDataReturn" type="apachesoap:Document"/>
>
>    </wsdl:message>
>
>    <wsdl:message name="updateResponse">
>
>       <wsdl:part name="updateReturn" type="apachesoap:Document"/>
>
>    </wsdl:message>
>
>    <wsdl:portType name="Searcher">
>
>       <wsdl:operation name="update" parameterOrder="input">
>
>          <wsdl:input message="impl:updateRequest" name="updateRequest"/>
>
>          <wsdl:output message="impl:updateResponse" name="updateResponse"/>
>
>       </wsdl:operation>
>
>       <wsdl:operation name="byFiscalCode" parameterOrder="doc">
>
>          <wsdl:input message="impl:byFiscalCodeRequest" 
> name="byFiscalCodeRequest"/>
>
>          <wsdl:output message="impl:byFiscalCodeResponse" 
> name="byFiscalCodeResponse"/>
>
>       </wsdl:operation>
>
>       <wsdl:operation name="byUserData" parameterOrder="input">
>
>          <wsdl:input message="impl:byUserDataRequest" 
> name="byUserDataRequest"/>
>
>          <wsdl:output message="impl:byUserDataResponse" 
> name="byUserDataResponse"/>
>
>       </wsdl:operation>
>
>       <wsdl:operation name="byFamilyCode" parameterOrder="input">
>
>          <wsdl:input message="impl:byFamilyCodeRequest" 
> name="byFamilyCodeRequest"/>
>
>          <wsdl:output message="impl:byFamilyCodeResponse" 
> name="byFamilyCodeResponse"/>
>
>       </wsdl:operation>
>
>       <wsdl:operation name="toponomastic" parameterOrder="input">
>
>          <wsdl:input message="impl:toponomasticRequest" 
> name="toponomasticRequest"/>
>
>          <wsdl:output message="impl:toponomasticResponse" 
> name="toponomasticResponse"/>
>
>       </wsdl:operation>
>
>    </wsdl:portType>
>
>    <wsdl:binding name="SearcherSoapBinding" type="impl:Searcher">
>
>       <wsdlsoap:binding style="document" 
> transport="http://schemas.xmlsoap.org/soap/http"/>
>
>       <wsdl:operation name="update">
>
>          <wsdlsoap:operation soapAction=""/>
>
>          <wsdl:input name="updateRequest">
>
>             <wsdlsoap:body 
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; use="encoded"/>
>
>          </wsdl:input>
>
>          <wsdl:output name="updateResponse">
>
>             <wsdlsoap:body 
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; use="encoded"/>
>
>          </wsdl:output>
>
>       </wsdl:operation>
>
>       <wsdl:operation name="byFiscalCode">
>
>          <wsdlsoap:operation soapAction=""/>
>
>          <wsdl:input name="byFiscalCodeRequest">
>
>             <wsdlsoap:body 
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; use="encoded"/>
>
>          </wsdl:input>
>
>          <wsdl:output name="byFiscalCodeResponse">
>
>             <wsdlsoap:body 
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; use="encoded"/>
>
>          </wsdl:output>
>
>       </wsdl:operation>
>
>       <wsdl:operation name="byUserData">
>
>          <wsdlsoap:operation soapAction=""/>
>
>          <wsdl:input name="byUserDataRequest">
>
>             <wsdlsoap:body 
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; use="encoded"/>
>
>          </wsdl:input>
>
>          <wsdl:output name="byUserDataResponse">
> 
>             <wsdlsoap:body 
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; use="encoded"/>
>
>          </wsdl:output>
>
>       </wsdl:operation>
>
>       <wsdl:operation name="byFamilyCode">
>
>          <wsdlsoap:operation soapAction=""/>
>
>          <wsdl:input name="byFamilyCodeRequest">
>
>             <wsdlsoap:body 
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; use="encoded"/>
>
>          </wsdl:input>
>
>          <wsdl:output name="byFamilyCodeResponse">
>
>             <wsdlsoap:body 
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; use="encoded"/>
>
>          </wsdl:output>
>
>       </wsdl:operation>
>
>       <wsdl:operation name="toponomastic">
>
>          <wsdlsoap:operation soapAction=""/>
>
>          <wsdl:input name="toponomasticRequest">
> 
>             <wsdlsoap:body 
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; use="encoded"/>
>
>          </wsdl:input>
>
>          <wsdl:output name="toponomasticResponse">
>
>             <wsdlsoap:body 
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; use="encoded"/>
>
>          </wsdl:output>
>
>       </wsdl:operation>
>
>    </wsdl:binding>
>
>    <wsdl:service name="SearcherService">
>
>       <wsdl:port binding="impl:SearcherSoapBinding" name="Searcher">
>
>          <wsdlsoap:address 
> location="http://localhost:8080/ServicePublisher/services/Searcher"/>
>
>       </wsdl:port>
>
>    </wsdl:service>
>
> </wsdl:definitions>
>
> I have this client:
>
> import org.apache.axis.client.Call;
> import org.apache.axis.client.Service;
> import org.apache.axis.message.SOAPBodyElement;
> import org.apache.axis.message.SOAPBody;
> import org.apache.axis.utils.XMLUtils;
> import javax.xml.rpc.ServiceException;
>
> import java.util.Vector;
> import org.w3c.dom.Document;
> import javax.xml.namespace.QName;
>
> import org.apache.log4j.Logger;
> import java.net.URL;
> import java.net.MalformedURLException;
> import javax.xml.parsers.DocumentBuilderFactory;
> import javax.xml.parsers.DocumentBuilder;
>
> 
> /**
>  * <p>Title: Prototipo Piattaforma PMM piattaforma per la gestione di Web
>  * Services</p>
>  *
>  * <p>Description: Prototipo semplice per la costruzione della piattaforma PMM
>  * utilizzata per interagire con dei web services.</p>
>  *
>  * <p>Copyright: Copyright (c) 2005</p>
>  *
>  * <p>Company: Engineering Ingegneria Informatica</p>
>  *
>  * @author Angelo Immediata
>  * @version 1.0
>  */
> public class SimpleAxisClient {
>
>     /**
>      * Il logger
>      */
>     private static final Logger LOG = Logger.getLogger(SimpleAxisClient.class.
>             getName());
>
>     /**
>      * Preparo il l'oggetto Call da utilizzare
>      * @param endpoint String -l'endpoint da utilizzare
>      * @param operation String -l'operazione da invocare
>      * @return Call -il Call generato.
>      * @throws ServiceException -Se ci sono problemi col servizio
>      */
>     private Call getCall(String endpoint, String operation) throws
>             ServiceException {
>
>         if (LOG.isDebugEnabled()) {
>
>             LOG.debug("Creating call.....");
>         }
>         Call result = (Call) (new Service()).createCall();
>         try {
>             result.setTargetEndpointAddress(new URL(endpoint));
>
>         } catch (MalformedURLException ex) {
>
>             LOG.error(ex);
>         }
>
>         result.setOperation(new QName(endpoint, operation), operation);
>         if (LOG.isDebugEnabled()) {
>
>             LOG.debug("Done!!");
>         }
>         return result;
>     }
>
>     /**
>      * Invoco il web service passandogli il Document generato dalla classe 
> it.eng.prototype.xml.Parser
>      * @param doc Document -il Document generato.
>      * @param endpoint String -l'endpoint del servizio.
>      * @param operation String -l'operazione da invocare.
>      * @return Document -il document in uscita al webService
>      * @throws Exception
>      */
>     public Document getDocument(Document doc, String endpoint,
>                                 String operation) throws Exception {
>         Call call = getCall(endpoint, operation);
>         Vector result = (Vector) call.invoke(new Object[] {doc});
>         //Vector result = (Vector) call.invoke(new SOAPBodyElement[] { new 
> SOAPBodyElement( doc.getDocumentElement() )});
>         SOAPBodyElement sbe = (SOAPBodyElement) result.get(0);
>
>         if (LOG.isDebugEnabled()) {
>
>             LOG.debug("Body ricevuto: " +
>                       XMLUtils.DocumentToString(sbe.getAsDocument()));
>         }
>         return sbe.getAsDocument();
>     }
>
>     public static void main(String args[]) throws Exception {
>         SimpleAxisClient client = new SimpleAxisClient();
>         Call miaCall = client.getCall(
>                 
> "http://localhost:8082/ServicePublisher/services/Searcher","byFiscalCode";);
>         //it.eng.napsi.util.XMLUtil.stringToDocument(  )
>         DocumentBuilderFactory fac = DocumentBuilderFactory.newInstance();
>         fac.setValidating(false);
>         DocumentBuilder builder = fac.newDocumentBuilder(); // 
> DocumentBuilderFactory.newInstance().newDocumentBuilder();
>
>         Document doc = builder.parse(new java.io.ByteArrayInputStream("<?xml 
> version='1.0' encoding='UTF-8' 
> standalone='yes'?><ricercaIndividuo><codiceFiscale>MMDNGL74C22H703K</codiceFiscale></ricercaIndividuo>".getBytes()));
>
>                 /*
>                  Document doc = org.apache.axis.utils.XMLUtils.newDocument();
>                  org.w3c.dom.Element ricercaInd = doc.createElementNS( 
> "pippo", "byFiscalCode" );
>                  org.w3c.dom.Element codFisc = doc.createElementNS( "pippo", 
> "codiceFiscale" );
>
>                  //codFisc.setNodeValue( "MMDNGL74C22H703K" );
>                  ricercaInd.appendChild( codFisc );
>                  codFisc.setNodeValue( "MMDNGL74C22H703K" );
>                  doc.appendChild( ricercaInd );
>                  System.out.println( XMLUtils.DocumentToString( doc ) );
>                  /*
>                  org.w3c.dom.Element elemento = 
> org.apache.axis.utils.XMLUtils.StringToElement( "pippo", "codiceFiscale", 
> "MMDNGL74C22H703K" );
>                  org.w3c.dom.Element ric = 
> org.apache.axis.utils.XMLUtils.StringToElement( "pippo", "ricercaIndividuo", 
> "" );
>
>                  doc.importNode(ric, true);
>                  */
>
>         //Document doc = XMLUtils.newDocument(new 
> java.io.ByteArrayInputStream("<?xml version='1.0' encoding='UTF-8' 
> standalone='yes'?><ricercaIndividuo><codiceFiscale>MMDNGL74C22H703K</codiceFiscale></ricercaIndividuo>".getBytes()));
>         org.apache.axis.utils.XMLUtils.StringToElement( "a", 
> "ricercaIndividuo", "<codiceFiscale>MMDNGL74C22H703K</codiceFiscale>" );
>         System.out.println("doc.getDocumentElement(): " +
>                            doc.getDocumentElement().getNodeName());
>         //System.out.println(miaCall.invoke(new SOAPBodyElement[] {new 
> SOAPBodyElement(new java.io.ByteArrayInputStream("<?xml version='1.0' 
> encoding='UTF-8' 
> standalone='yes'?><ricercaIndividuo><codiceFiscale>MMDNGL74C22H703K</codiceFiscale></ricercaIndividuo>".getBytes()))}));
>         System.out.println(miaCall.invoke(new SOAPBodyElement[] {new 
> SOAPBodyElement(org.apache.axis.utils.XMLUtils.StringToElement( "a", 
> "ricercaIndividuo", "<codiceFiscale>MMDNGL74C22H703K</codiceFiscale>" ))}));
>
>     }
> }
>
> Well when i try this client i have this error:
> AxisFault
>  faultCode: {http://xml.apache.org/axis/}Client
>  faultSubcode:
>  faultString: No such operation 'ricercaIndividuo'
>  faultActor:
>  faultNode: 
>  faultDetail:
>       {http://xml.apache.org/axis/}hostname:PORT-IMMEDIATA
>
> No such operation 'ricercaIndividuo'
>       at 
> org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:221)
>       at 
> org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:128)
>       at 
> org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1083)
>       at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown 
> Source)
>       at 
> org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
>       at 
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
>  Source)
>       at 
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown 
> Source)
>       at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
>       at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
>       at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
>       at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
>       at javax.xml.parsers.SAXParser.parse(SAXParser.java:345)
>       at 
> org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:226)
>       at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:645)
>       at org.apache.axis.Message.getSOAPEnvelope(Message.java:424)
>       at 
> org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
>       at org.apache.axis.client.AxisClient.invoke(AxisClient.java:173)
>       at org.apache.axis.client.Call.invokeEngine(Call.java:2719)
>       at org.apache.axis.client.Call.invoke(Call.java:2702)
>       at org.apache.axis.client.Call.invoke(Call.java:1738)
>       at 
> it.eng.test.client.util.SimpleAxisClient.main(SimpleAxisClient.java:130)
> Exception in thread "main"
>
> Can anybody tell me why?
> Thanks to all.
>
>
>
> ____________________________________________________________
> Navighi a 4 MEGA e i primi 3 mesi sono GRATIS.
> Scegli Libero Adsl Flat senza limiti su http://www.libero.it
>
>
> 



____________________________________________________________
Navighi a 4 MEGA e i primi 3 mesi sono GRATIS. 
Scegli Libero Adsl Flat senza limiti su http://www.libero.it


Reply via email to