axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "angeloimm" <angelo...@libero.it>
Subject Re: Axis1.2 RC3 Couldn
Date Wed, 27 Apr 2005 16:01:56 GMT
---------- 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 <angeloimm@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



Mime
View raw message