You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by angeloimm <an...@libero.it> on 2005/04/27 18:01:56 UTC
Re: Axis1.2 RC3 Couldn
---------- Initial Header -----------
>From : "Anne Thomas Manes" atmanes@gmail.com
To : axis-user@ws.apache.org
Cc :
Date : Wed, 27 Apr 2005 09:52:28 -0400
Subject : Re: Axis1.2 RC3 Couldn't find an appropriate operation for XML QName
> I take it that you didn't like the WSDL I sent you last time.
Oh no... i liked your WSDL; i'll never end to thanks you.
The problem is that i need to use an IDE; i have seen some Eclipse plugin (Lomboz and Lavadora) but i don't like them very much. I must use an IDE since i'll have to create 114 clients from WSDL so i'm starting from creating test web services and schemas so that i can use them (it's from 10 days that i'm studing Web Services, Axis and WS-BPEL and i have some confusion). The pnly IDE i know better than Eclipse is JBuilder and now i'm working with it, even if i'm waiting for IBM Web Tools M4.
> I think
> your problem is that you're trying to use the JBuilder tool, which
> keeps trying to take you down the wrong path.
This is the problem.
>
> Here are some problems with your WSDL:
>
> 1- you should not use type="apachesoap:document". This type is not
> described in any schema, so only Axis knows how to interpret it. As I
> said in my last response to you, you should specify the schema for
> your document in your WSDL, even if you intend to use the messaging
> API. If you aren't willing to specify the actual message structure in
> your WSDL, then use type="xsd:anyType".
>
> 2- you should not specify the parameterOrder attribute in the
> <wsdl:operation> definition.
>
> 3- every operation in your service must have a unique request message
> signature. The signature is determined by the QName of the child of
> the <soap:body> element. So, for example, (based on your current WSDL)
> the input message for the byFiscalCode request must look like this:
>
> <env:Body>
> <impl:doc xmlns:impl="http://javabean.websrv.napsi.eng.it">
> <ricercaIndividuo>
> <codiceFiscale>XXXXXXXXXXXXX</codiceFiscale>
> </ricercaIndividuo>
> </impl:doc>
> </env:Body>
>
> If you wish to send the same root element (<ricercaIndividuo>) to all
> of your methods, then you should create one interface, and then in
> your service you can interpet the request based on the message
> contents (<codiceFiscale>).
>
> Anne
Let's suppose i have changed my WSDL file in the right way; in this moment i need to call the web service.... i have tried to call by using
<env:Body>
<impl:doc xmlns:impl="http://javabean.websrv.napsi.eng.it">
<ricercaIndividuo>
<codiceFiscale>XXXXXXXXXXXXX</codiceFiscale>
</ricercaIndividuo>
</impl:doc>
</env:Body>
But i have always the same error that is:
HTTP/1.1 500 Internal Server Error
X-Powered-By: Servlet 2.4; Tomcat-5.0.28/JBoss-3.2.6 (build: CVSTag=JBoss_3_2_6 date=200410140106)
Content-Type: text/xml;charset=utf-8
Date: Wed, 27 Apr 2005 16:00:29 GMT
Server: Apache-Coyote/1.1
Connection: close
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server.generalException</faultcode>
<faultstring>Couldn't find an appropriate operation for XML QName {http://javabean.websrv.napsi.eng.it}doc</faultstring>
<detail>
<ns1:hostname xmlns:ns1="http://xml.apache.org/axis/">PORT-IMMEDIATA</ns1:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
If i use a java class that has only one method all works fine..... why?
>
> On 4/27/05, angeloimm <an...@libero.it> wrote:
> > Hi all... sorry for the disturb but i don't understand :-) ; 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;
> > import java.util.*;
> >
> > import it.eng.napsi.input.individuo.IndividualMarshaller;
> > public class SimpleAxisClient {
> >
> > /**
> > * Il logger
> > */
> > private static final Logger LOG = Logger.getLogger(SimpleAxisClient.class.
> > getName());
> >
> > 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;
> > }
> >
> > 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 {
> >
> > IndividualMarshaller ind = new IndividualMarshaller();
> > Map envi = new Hashtable();
> > envi.put( "codFisc","XXXXXXXXXXXXX" );
> > String xmlString = ind.toStringDocument( envi );
> > System.out.println( xmlString );
> > SimpleAxisClient client = new SimpleAxisClient();
> > Call miaCall = client.getCall(
> > "http://localhost:8082/ServicePublisher/services/Interaction","byFiscalCode");
> > Document doc = XMLUtils.newDocument(new java.io.ByteArrayInputStream(xmlString.getBytes()));
> > System.out.println("doc.getDocumentElement(): " +
> > doc.getDocumentElement().getNodeName());
> > Vector result = (Vector) miaCall.invoke
> > (new SOAPBodyElement[] {new SOAPBodyElement(doc.
> > getDocumentElement())});
> > SOAPBodyElement sbe = (SOAPBodyElement) result.get(0);
> >
> > System.out.println( "Ottenuto: "+ XMLUtils.DocumentToString( sbe.getAsDocument() ) );
> > }
> > }
> >
> > This is my service:
> > package it.eng.napsi.websrv.javabean;
> >
> > //Java stuff
> > import org.w3c.dom.Document;
> > import java.rmi.RemoteException;
> >
> > //Eng stuff
> > import it.eng.napsi.util.RetrieveProperties;
> > import it.eng.napsi.handlers.model.DataHandler;
> > import it.eng.napsi.handlers.DataHandlerFactory;
> > import it.eng.napsi.constraint.DataHandlerConstraint;
> >
> > //Log4j stuff
> > import org.apache.log4j.Logger;
> > import it.eng.napsi.handlers.exception.HandlerException;
> >
> > public class Interaction {
> >
> > private String dataSourceName;
> > private DataHandler handler;
> > private static final Logger LOG = Logger.getLogger(Interaction.class.
> > getName());
> >
> > public Interaction(){
> >
> > try {
> > dataSourceName = "anagrafe";
> > if( LOG.isDebugEnabled() ){
> >
> > LOG.debug( "RetrieveProperties has given to me: "+ dataSourceName );
> > }
> > handler = DataHandlerFactory.getInstance().getHandler(
> > DataHandlerConstraint.JDBC_TYPE, dataSourceName);
> > } catch (HandlerException ex) {
> >
> > LOG.error("HandlerException", ex);
> > }
> > }
> > public Document byFiscalCode(Document doc) throws RemoteException {
> > try {
> > return handler.individualSearch(doc);
> > } catch (HandlerException ex) {
> >
> > throw new RemoteException("HandlerException", ex);
> > }
> > }
> >
> > public Document byUserData(Document input) throws RemoteException {
> > try {
> > return handler.individualSearch(input);
> > } catch (HandlerException ex) {
> >
> > throw new RemoteException("HandlerException", ex);
> > }
> > }
> > public Document byFamilyCode(Document input) throws RemoteException {
> > try {
> > return handler.individualSearch(input);
> > } catch (HandlerException ex) {
> >
> > throw new RemoteException("HandlerException", ex);
> > }
> > }
> >
> > public Document toponomastic(Document input) throws RemoteException {
> > try {
> > return handler.toponomasticSearch(input);
> > } catch (HandlerException ex) {
> >
> > throw new RemoteException("HandlerException", ex);
> > }
> > }
> >
> > public Document update(Document input) throws RemoteException {
> > try {
> > return handler.update(input);
> > } catch (HandlerException ex) {
> >
> > throw new RemoteException("HandlerException", ex);
> > }
> >
> > }
> > }
> >
> > This is the wsdl:
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <wsdl:definitions targetNamespace="http://javabean.websrv.napsi.eng.it" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://javabean.websrv.napsi.eng.it" xmlns:intf="http://javabean.websrv.napsi.eng.it" 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:types>
> > <schema elementFormDefault="qualified" targetNamespace="http://javabean.websrv.napsi.eng.it" xmlns="http://www.w3.org/2001/XMLSchema">
> > <import namespace="http://xml.apache.org/xml-soap"/>
> > <element name="input" type="apachesoap:Document"/>
> > <element name="updateReturn" type="apachesoap:Document"/>
> > <element name="doc" type="apachesoap:Document"/>
> > <element name="byFiscalCodeReturn" type="apachesoap:Document"/>
> > <element name="input1" type="apachesoap:Document"/>
> > <element name="byUserDataReturn" type="apachesoap:Document"/>
> > <element name="input2" type="apachesoap:Document"/>
> > <element name="byFamilyCodeReturn" type="apachesoap:Document"/>
> > <element name="input3" type="apachesoap:Document"/>
> > <element name="toponomasticReturn" type="apachesoap:Document"/>
> > </schema>
> > </wsdl:types>
> >
> > <wsdl:message name="toponomasticRequest">
> >
> > <wsdl:part element="impl:input3" name="input"/>
> >
> > </wsdl:message>
> >
> > <wsdl:message name="updateResponse">
> >
> > <wsdl:part element="impl:updateReturn" name="updateReturn"/>
> >
> > </wsdl:message>
> >
> > <wsdl:message name="byFamilyCodeRequest">
> >
> > <wsdl:part element="impl:input2" name="input"/>
> >
> > </wsdl:message>
> >
> > <wsdl:message name="byUserDataRequest">
> >
> > <wsdl:part element="impl:input1" name="input"/>
> >
> > </wsdl:message>
> >
> > <wsdl:message name="toponomasticResponse">
> >
> > <wsdl:part element="impl:toponomasticReturn" name="toponomasticReturn"/>
> >
> > </wsdl:message>
> >
> > <wsdl:message name="byFamilyCodeResponse">
> >
> > <wsdl:part element="impl:byFamilyCodeReturn" name="byFamilyCodeReturn"/>
> >
> > </wsdl:message>
> >
> > <wsdl:message name="updateRequest">
> >
> > <wsdl:part element="impl:input" name="input"/>
> >
> > </wsdl:message>
> >
> > <wsdl:message name="byUserDataResponse">
> >
> > <wsdl:part element="impl:byUserDataReturn" name="byUserDataReturn"/>
> >
> > </wsdl:message>
> >
> > <wsdl:message name="byFiscalCodeResponse">
> >
> > <wsdl:part element="impl:byFiscalCodeReturn" name="byFiscalCodeReturn"/>
> >
> > </wsdl:message>
> >
> > <wsdl:message name="byFiscalCodeRequest">
> >
> > <wsdl:part element="impl:doc" name="doc"/>
> >
> > </wsdl:message>
> >
> > <wsdl:portType name="Interaction">
> >
> > <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="InteractionSoapBinding" type="impl:Interaction">
> >
> > <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
> >
> > <wsdl:operation name="update">
> >
> > <wsdlsoap:operation soapAction=""/>
> >
> > <wsdl:input name="updateRequest">
> >
> > <wsdlsoap:body use="literal"/>
> >
> > </wsdl:input>
> >
> > <wsdl:output name="updateResponse">
> >
> > <wsdlsoap:body use="literal"/>
> >
> > </wsdl:output>
> >
> > </wsdl:operation>
> >
> > <wsdl:operation name="byFiscalCode">
> >
> > <wsdlsoap:operation soapAction=""/>
> >
> > <wsdl:input name="byFiscalCodeRequest">
> >
> > <wsdlsoap:body use="literal"/>
> >
> > </wsdl:input>
> >
> > <wsdl:output name="byFiscalCodeResponse">
> >
> > <wsdlsoap:body use="literal"/>
> >
> > </wsdl:output>
> >
> > </wsdl:operation>
> >
> > <wsdl:operation name="byUserData">
> >
> > <wsdlsoap:operation soapAction=""/>
> >
> > <wsdl:input name="byUserDataRequest">
> >
> > <wsdlsoap:body use="literal"/>
> >
> > </wsdl:input>
> >
> > <wsdl:output name="byUserDataResponse">
> >
> > <wsdlsoap:body use="literal"/>
> >
> > </wsdl:output>
> >
> > </wsdl:operation>
> >
> > <wsdl:operation name="byFamilyCode">
> >
> > <wsdlsoap:operation soapAction=""/>
> >
> > <wsdl:input name="byFamilyCodeRequest">
> >
> > <wsdlsoap:body use="literal"/>
> >
> > </wsdl:input>
> >
> > <wsdl:output name="byFamilyCodeResponse">
> >
> > <wsdlsoap:body use="literal"/>
> >
> > </wsdl:output>
> >
> > </wsdl:operation>
> >
> > <wsdl:operation name="toponomastic">
> >
> > <wsdlsoap:operation soapAction=""/>
> >
> > <wsdl:input name="toponomasticRequest">
> >
> > <wsdlsoap:body use="literal"/>
> >
> > </wsdl:input>
> >
> > <wsdl:output name="toponomasticResponse">
> >
> > <wsdlsoap:body use="literal"/>
> >
> > </wsdl:output>
> >
> > </wsdl:operation>
> >
> > </wsdl:binding>
> >
> > <wsdl:service name="InteractionService">
> >
> > <wsdl:port binding="impl:InteractionSoapBinding" name="Interaction">
> >
> > <wsdlsoap:address location="http://localhost:8080/ServicePublisher/services/Interaction"/>
> >
> > </wsdl:port>
> >
> > </wsdl:service>
> >
> > </wsdl:definitions>
> >
> > This is the axis.wsdd service definition:
> > <service name="Interaction" type="" regenerateElement="false"
> > provider="java:MSG" style="message" use="literal" validate="false">
> > <parameter name="scope" value="Request" regenerateElement="false"/>
> > <parameter name="className"
> > value="it.eng.napsi.websrv.javabean.Interaction" regenerateElement="false"/>
> > <parameter name="allowedMethods" value="*" regenerateElement="false"/>
> > <namespace>http://javabean.websrv.napsi.eng.it</namespace>
> > </service>
> >
> > I'm using JBuilder 2005, Axis1.2RC3, JBoss3.2.6, JVM1.4.2_07; when i try this client the request SOAP message is:
> >
> > POST /ServicePublisher/services/Interaction HTTP/1.0
> >
> > Content-Type: text/xml; charset=utf-8
> >
> > Accept: application/soap+xml, application/dime, multipart/related, text/*
> >
> > User-Agent: Axis/1.2RC3
> >
> > Host: 127.0.0.1:8082
> >
> > Cache-Control: no-cache
> >
> > Pragma: no-cache
> >
> > SOAPAction: ""
> >
> > Content-Length: 351
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> > <soapenv:Body>
> > <ricercaIndividuo>
> > <codiceFiscale>XXXXXXXXXXXXX</codiceFiscale>
> > </ricercaIndividuo>
> > </soapenv:Body>
> > </soapenv:Envelope>
> >
> > Well the response is:
> > HTTP/1.1 500 Internal Server Error
> >
> > X-Powered-By: Servlet 2.4; Tomcat-5.0.28/JBoss-3.2.6 (build: CVSTag=JBoss_3_2_6 date=200410140106)
> >
> > Content-Type: text/xml;charset=utf-8
> >
> > Date: Wed, 27 Apr 2005 13:14:37 GMT
> >
> > Server: Apache-Coyote/1.1
> >
> > Connection: close
> >
> > <?xml version="1.0" encoding="utf-8"?>
> > <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> > <soapenv:Body>
> > <soapenv:Fault>
> > <faultcode>soapenv:Server.generalException</faultcode>
> > <faultstring>Couldn't find an appropriate operation for XML QName ricercaIndividuo</faultstring>
> > <detail>
> > <ns1:hostname xmlns:ns1="http://xml.apache.org/axis/">PORT-IMMEDIATA</ns1:hostname>
> > </detail>
> > </soapenv:Fault>
> > </soapenv:Body>
> > </soapenv:Envelope>
> >
> > Can anybody tell me why?
> > Thanks
> >
> > ____________________________________________________________
> > 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
Re: Axis1.2 RC3 Couldn
Posted by Anne Thomas Manes <at...@gmail.com>.
Now you have to make sure that your WSDD maps the impl:doc QName to
the appropriate method in your service. You do that using the
<operation> element:
http://www.osmoticweb.com/axis-wsdd/operation.htm
Anne
On 4/27/05, angeloimm <an...@libero.it> wrote:
> ---------- Initial Header -----------
>
> From : "Anne Thomas Manes" atmanes@gmail.com
> To : axis-user@ws.apache.org
> Cc :
> Date : Wed, 27 Apr 2005 09:52:28 -0400
> Subject : Re: Axis1.2 RC3 Couldn't find an appropriate operation for XML QName
>
> > I take it that you didn't like the WSDL I sent you last time.
> Oh no... i liked your WSDL; i'll never end to thanks you.
> The problem is that i need to use an IDE; i have seen some Eclipse plugin (Lomboz and Lavadora) but i don't like them very much. I must use an IDE since i'll have to create 114 clients from WSDL so i'm starting from creating test web services and schemas so that i can use them (it's from 10 days that i'm studing Web Services, Axis and WS-BPEL and i have some confusion). The pnly IDE i know better than Eclipse is JBuilder and now i'm working with it, even if i'm waiting for IBM Web Tools M4.
>
> > I think
> > your problem is that you're trying to use the JBuilder tool, which
> > keeps trying to take you down the wrong path.
> This is the problem.
> >
> > Here are some problems with your WSDL:
> >
> > 1- you should not use type="apachesoap:document". This type is not
> > described in any schema, so only Axis knows how to interpret it. As I
> > said in my last response to you, you should specify the schema for
> > your document in your WSDL, even if you intend to use the messaging
> > API. If you aren't willing to specify the actual message structure in
> > your WSDL, then use type="xsd:anyType".
> >
> > 2- you should not specify the parameterOrder attribute in the
> > <wsdl:operation> definition.
> >
> > 3- every operation in your service must have a unique request message
> > signature. The signature is determined by the QName of the child of
> > the <soap:body> element. So, for example, (based on your current WSDL)
> > the input message for the byFiscalCode request must look like this:
> >
> > <env:Body>
> > <impl:doc xmlns:impl="http://javabean.websrv.napsi.eng.it">
> > <ricercaIndividuo>
> > <codiceFiscale>XXXXXXXXXXXXX</codiceFiscale>
> > </ricercaIndividuo>
> > </impl:doc>
> > </env:Body>
> >
> > If you wish to send the same root element (<ricercaIndividuo>) to all
> > of your methods, then you should create one interface, and then in
> > your service you can interpet the request based on the message
> > contents (<codiceFiscale>).
> >
> > Anne
> Let's suppose i have changed my WSDL file in the right way; in this moment i need to call the web service.... i have tried to call by using
>
> <env:Body>
> <impl:doc xmlns:impl="http://javabean.websrv.napsi.eng.it">
> <ricercaIndividuo>
> <codiceFiscale>XXXXXXXXXXXXX</codiceFiscale>
> </ricercaIndividuo>
> </impl:doc>
> </env:Body>
>
> But i have always the same error that is:
> HTTP/1.1 500 Internal Server Error
>
> X-Powered-By: Servlet 2.4; Tomcat-5.0.28/JBoss-3.2.6 (build: CVSTag=JBoss_3_2_6 date=200410140106)
>
> Content-Type: text/xml;charset=utf-8
>
> Date: Wed, 27 Apr 2005 16:00:29 GMT
>
> Server: Apache-Coyote/1.1
>
> Connection: close
>
> <?xml version="1.0" encoding="utf-8"?>
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> <soapenv:Body>
> <soapenv:Fault>
> <faultcode>soapenv:Server.generalException</faultcode>
> <faultstring>Couldn't find an appropriate operation for XML QName {http://javabean.websrv.napsi.eng.it}doc</faultstring>
> <detail>
> <ns1:hostname xmlns:ns1="http://xml.apache.org/axis/">PORT-IMMEDIATA</ns1:hostname>
> </detail>
> </soapenv:Fault>
> </soapenv:Body>
> </soapenv:Envelope>
>
> If i use a java class that has only one method all works fine..... why?
>
> >
> > On 4/27/05, angeloimm <an...@libero.it> wrote:
> > > Hi all... sorry for the disturb but i don't understand :-) ; 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;
> > > import java.util.*;
> > >
> > > import it.eng.napsi.input.individuo.IndividualMarshaller;
> > > public class SimpleAxisClient {
> > >
> > > /**
> > > * Il logger
> > > */
> > > private static final Logger LOG = Logger.getLogger(SimpleAxisClient.class.
> > > getName());
> > >
> > > 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;
> > > }
> > >
> > > 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 {
> > >
> > > IndividualMarshaller ind = new IndividualMarshaller();
> > > Map envi = new Hashtable();
> > > envi.put( "codFisc","XXXXXXXXXXXXX" );
> > > String xmlString = ind.toStringDocument( envi );
> > > System.out.println( xmlString );
> > > SimpleAxisClient client = new SimpleAxisClient();
> > > Call miaCall = client.getCall(
> > > "http://localhost:8082/ServicePublisher/services/Interaction","byFiscalCode");
> > > Document doc = XMLUtils.newDocument(new java.io.ByteArrayInputStream(xmlString.getBytes()));
> > > System.out.println("doc.getDocumentElement(): " +
> > > doc.getDocumentElement().getNodeName());
> > > Vector result = (Vector) miaCall.invoke
> > > (new SOAPBodyElement[] {new SOAPBodyElement(doc.
> > > getDocumentElement())});
> > > SOAPBodyElement sbe = (SOAPBodyElement) result.get(0);
> > >
> > > System.out.println( "Ottenuto: "+ XMLUtils.DocumentToString( sbe.getAsDocument() ) );
> > > }
> > > }
> > >
> > > This is my service:
> > > package it.eng.napsi.websrv.javabean;
> > >
> > > //Java stuff
> > > import org.w3c.dom.Document;
> > > import java.rmi.RemoteException;
> > >
> > > //Eng stuff
> > > import it.eng.napsi.util.RetrieveProperties;
> > > import it.eng.napsi.handlers.model.DataHandler;
> > > import it.eng.napsi.handlers.DataHandlerFactory;
> > > import it.eng.napsi.constraint.DataHandlerConstraint;
> > >
> > > //Log4j stuff
> > > import org.apache.log4j.Logger;
> > > import it.eng.napsi.handlers.exception.HandlerException;
> > >
> > > public class Interaction {
> > >
> > > private String dataSourceName;
> > > private DataHandler handler;
> > > private static final Logger LOG = Logger.getLogger(Interaction.class.
> > > getName());
> > >
> > > public Interaction(){
> > >
> > > try {
> > > dataSourceName = "anagrafe";
> > > if( LOG.isDebugEnabled() ){
> > >
> > > LOG.debug( "RetrieveProperties has given to me: "+ dataSourceName );
> > > }
> > > handler = DataHandlerFactory.getInstance().getHandler(
> > > DataHandlerConstraint.JDBC_TYPE, dataSourceName);
> > > } catch (HandlerException ex) {
> > >
> > > LOG.error("HandlerException", ex);
> > > }
> > > }
> > > public Document byFiscalCode(Document doc) throws RemoteException {
> > > try {
> > > return handler.individualSearch(doc);
> > > } catch (HandlerException ex) {
> > >
> > > throw new RemoteException("HandlerException", ex);
> > > }
> > > }
> > >
> > > public Document byUserData(Document input) throws RemoteException {
> > > try {
> > > return handler.individualSearch(input);
> > > } catch (HandlerException ex) {
> > >
> > > throw new RemoteException("HandlerException", ex);
> > > }
> > > }
> > > public Document byFamilyCode(Document input) throws RemoteException {
> > > try {
> > > return handler.individualSearch(input);
> > > } catch (HandlerException ex) {
> > >
> > > throw new RemoteException("HandlerException", ex);
> > > }
> > > }
> > >
> > > public Document toponomastic(Document input) throws RemoteException {
> > > try {
> > > return handler.toponomasticSearch(input);
> > > } catch (HandlerException ex) {
> > >
> > > throw new RemoteException("HandlerException", ex);
> > > }
> > > }
> > >
> > > public Document update(Document input) throws RemoteException {
> > > try {
> > > return handler.update(input);
> > > } catch (HandlerException ex) {
> > >
> > > throw new RemoteException("HandlerException", ex);
> > > }
> > >
> > > }
> > > }
> > >
> > > This is the wsdl:
> > >
> > > <?xml version="1.0" encoding="UTF-8"?>
> > > <wsdl:definitions targetNamespace="http://javabean.websrv.napsi.eng.it" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://javabean.websrv.napsi.eng.it" xmlns:intf="http://javabean.websrv.napsi.eng.it" 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:types>
> > > <schema elementFormDefault="qualified" targetNamespace="http://javabean.websrv.napsi.eng.it" xmlns="http://www.w3.org/2001/XMLSchema">
> > > <import namespace="http://xml.apache.org/xml-soap"/>
> > > <element name="input" type="apachesoap:Document"/>
> > > <element name="updateReturn" type="apachesoap:Document"/>
> > > <element name="doc" type="apachesoap:Document"/>
> > > <element name="byFiscalCodeReturn" type="apachesoap:Document"/>
> > > <element name="input1" type="apachesoap:Document"/>
> > > <element name="byUserDataReturn" type="apachesoap:Document"/>
> > > <element name="input2" type="apachesoap:Document"/>
> > > <element name="byFamilyCodeReturn" type="apachesoap:Document"/>
> > > <element name="input3" type="apachesoap:Document"/>
> > > <element name="toponomasticReturn" type="apachesoap:Document"/>
> > > </schema>
> > > </wsdl:types>
> > >
> > > <wsdl:message name="toponomasticRequest">
> > >
> > > <wsdl:part element="impl:input3" name="input"/>
> > >
> > > </wsdl:message>
> > >
> > > <wsdl:message name="updateResponse">
> > >
> > > <wsdl:part element="impl:updateReturn" name="updateReturn"/>
> > >
> > > </wsdl:message>
> > >
> > > <wsdl:message name="byFamilyCodeRequest">
> > >
> > > <wsdl:part element="impl:input2" name="input"/>
> > >
> > > </wsdl:message>
> > >
> > > <wsdl:message name="byUserDataRequest">
> > >
> > > <wsdl:part element="impl:input1" name="input"/>
> > >
> > > </wsdl:message>
> > >
> > > <wsdl:message name="toponomasticResponse">
> > >
> > > <wsdl:part element="impl:toponomasticReturn" name="toponomasticReturn"/>
> > >
> > > </wsdl:message>
> > >
> > > <wsdl:message name="byFamilyCodeResponse">
> > >
> > > <wsdl:part element="impl:byFamilyCodeReturn" name="byFamilyCodeReturn"/>
> > >
> > > </wsdl:message>
> > >
> > > <wsdl:message name="updateRequest">
> > >
> > > <wsdl:part element="impl:input" name="input"/>
> > >
> > > </wsdl:message>
> > >
> > > <wsdl:message name="byUserDataResponse">
> > >
> > > <wsdl:part element="impl:byUserDataReturn" name="byUserDataReturn"/>
> > >
> > > </wsdl:message>
> > >
> > > <wsdl:message name="byFiscalCodeResponse">
> > >
> > > <wsdl:part element="impl:byFiscalCodeReturn" name="byFiscalCodeReturn"/>
> > >
> > > </wsdl:message>
> > >
> > > <wsdl:message name="byFiscalCodeRequest">
> > >
> > > <wsdl:part element="impl:doc" name="doc"/>
> > >
> > > </wsdl:message>
> > >
> > > <wsdl:portType name="Interaction">
> > >
> > > <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="InteractionSoapBinding" type="impl:Interaction">
> > >
> > > <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
> > >
> > > <wsdl:operation name="update">
> > >
> > > <wsdlsoap:operation soapAction=""/>
> > >
> > > <wsdl:input name="updateRequest">
> > >
> > > <wsdlsoap:body use="literal"/>
> > >
> > > </wsdl:input>
> > >
> > > <wsdl:output name="updateResponse">
> > >
> > > <wsdlsoap:body use="literal"/>
> > >
> > > </wsdl:output>
> > >
> > > </wsdl:operation>
> > >
> > > <wsdl:operation name="byFiscalCode">
> > >
> > > <wsdlsoap:operation soapAction=""/>
> > >
> > > <wsdl:input name="byFiscalCodeRequest">
> > >
> > > <wsdlsoap:body use="literal"/>
> > >
> > > </wsdl:input>
> > >
> > > <wsdl:output name="byFiscalCodeResponse">
> > >
> > > <wsdlsoap:body use="literal"/>
> > >
> > > </wsdl:output>
> > >
> > > </wsdl:operation>
> > >
> > > <wsdl:operation name="byUserData">
> > >
> > > <wsdlsoap:operation soapAction=""/>
> > >
> > > <wsdl:input name="byUserDataRequest">
> > >
> > > <wsdlsoap:body use="literal"/>
> > >
> > > </wsdl:input>
> > >
> > > <wsdl:output name="byUserDataResponse">
> > >
> > > <wsdlsoap:body use="literal"/>
> > >
> > > </wsdl:output>
> > >
> > > </wsdl:operation>
> > >
> > > <wsdl:operation name="byFamilyCode">
> > >
> > > <wsdlsoap:operation soapAction=""/>
> > >
> > > <wsdl:input name="byFamilyCodeRequest">
> > >
> > > <wsdlsoap:body use="literal"/>
> > >
> > > </wsdl:input>
> > >
> > > <wsdl:output name="byFamilyCodeResponse">
> > >
> > > <wsdlsoap:body use="literal"/>
> > >
> > > </wsdl:output>
> > >
> > > </wsdl:operation>
> > >
> > > <wsdl:operation name="toponomastic">
> > >
> > > <wsdlsoap:operation soapAction=""/>
> > >
> > > <wsdl:input name="toponomasticRequest">
> > >
> > > <wsdlsoap:body use="literal"/>
> > >
> > > </wsdl:input>
> > >
> > > <wsdl:output name="toponomasticResponse">
> > >
> > > <wsdlsoap:body use="literal"/>
> > >
> > > </wsdl:output>
> > >
> > > </wsdl:operation>
> > >
> > > </wsdl:binding>
> > >
> > > <wsdl:service name="InteractionService">
> > >
> > > <wsdl:port binding="impl:InteractionSoapBinding" name="Interaction">
> > >
> > > <wsdlsoap:address location="http://localhost:8080/ServicePublisher/services/Interaction"/>
> > >
> > > </wsdl:port>
> > >
> > > </wsdl:service>
> > >
> > > </wsdl:definitions>
> > >
> > > This is the axis.wsdd service definition:
> > > <service name="Interaction" type="" regenerateElement="false"
> > > provider="java:MSG" style="message" use="literal" validate="false">
> > > <parameter name="scope" value="Request" regenerateElement="false"/>
> > > <parameter name="className"
> > > value="it.eng.napsi.websrv.javabean.Interaction" regenerateElement="false"/>
> > > <parameter name="allowedMethods" value="*" regenerateElement="false"/>
> > > <namespace>http://javabean.websrv.napsi.eng.it</namespace>
> > > </service>
> > >
> > > I'm using JBuilder 2005, Axis1.2RC3, JBoss3.2.6, JVM1.4.2_07; when i try this client the request SOAP message is:
> > >
> > > POST /ServicePublisher/services/Interaction HTTP/1.0
> > >
> > > Content-Type: text/xml; charset=utf-8
> > >
> > > Accept: application/soap+xml, application/dime, multipart/related, text/*
> > >
> > > User-Agent: Axis/1.2RC3
> > >
> > > Host: 127.0.0.1:8082
> > >
> > > Cache-Control: no-cache
> > >
> > > Pragma: no-cache
> > >
> > > SOAPAction: ""
> > >
> > > Content-Length: 351
> > >
> > > <?xml version="1.0" encoding="UTF-8"?>
> > > <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> > > <soapenv:Body>
> > > <ricercaIndividuo>
> > > <codiceFiscale>XXXXXXXXXXXXX</codiceFiscale>
> > > </ricercaIndividuo>
> > > </soapenv:Body>
> > > </soapenv:Envelope>
> > >
> > > Well the response is:
> > > HTTP/1.1 500 Internal Server Error
> > >
> > > X-Powered-By: Servlet 2.4; Tomcat-5.0.28/JBoss-3.2.6 (build: CVSTag=JBoss_3_2_6 date=200410140106)
> > >
> > > Content-Type: text/xml;charset=utf-8
> > >
> > > Date: Wed, 27 Apr 2005 13:14:37 GMT
> > >
> > > Server: Apache-Coyote/1.1
> > >
> > > Connection: close
> > >
> > > <?xml version="1.0" encoding="utf-8"?>
> > > <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> > > <soapenv:Body>
> > > <soapenv:Fault>
> > > <faultcode>soapenv:Server.generalException</faultcode>
> > > <faultstring>Couldn't find an appropriate operation for XML QName ricercaIndividuo</faultstring>
> > > <detail>
> > > <ns1:hostname xmlns:ns1="http://xml.apache.org/axis/">PORT-IMMEDIATA</ns1:hostname>
> > > </detail>
> > > </soapenv:Fault>
> > > </soapenv:Body>
> > > </soapenv:Envelope>
> > >
> > > Can anybody tell me why?
> > > Thanks
> > >
> > > ____________________________________________________________
> > > 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
>
>