I take it that you didn't like the WSDL I sent you last time. I think your problem is that you're trying to use the JBuilder tool, which keeps trying to take you down the wrong path.
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 On 4/27/05, angeloimm <[EMAIL PROTECTED]> 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 > >