axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Pedro Silveira Vieira da Silva <psi...@dcc.online.pt>
Subject Message element name and documen tstyle service
Date Tue, 06 Feb 2007 14:24:33 GMT
I've created a web service that has a simple function that receives a
parameter:
package pt.gedi.ws;

import oasisNamesSpecificationUblSchemaXsdInvoice2.InvoiceDocument;

public class ReceiveInvoice {

	public void receive(InvoiceDocument invDoc) {
		doSomething(invDoc);
	}
}


For this service I've created a deploy.wsdd that goes like this:

<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
         xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
  <service name="InvoiceReceiver" style="document">
   <parameter name="className" value="pt.gedi.ws.ReceiveInvoice" />
   <parameter name="allowedMethods" value="receive" />
  </service>
</deployment>


Wich in turn gives this wsdl after deployment:

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions 
targetNamespace="http://localhost:8080/WS/services/InvoiceReceiver" 
xmlns:apachesoap="http://xml.apache.org/xml-soap" 
xmlns:impl="http://localhost:8080/WS/services/InvoiceReceiver" 
xmlns:intf="http://localhost:8080/WS/services/InvoiceReceiver" 
xmlns:tns1="http://oasisNamesSpecificationUblSchemaXsdInvoice2" 
xmlns:tns2="http://ws.gedi.pt" 
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.4
Built on Apr 22, 2006 (06:55:48 PDT)-->
  <wsdl:types>
   <schema elementFormDefault="qualified" 
targetNamespace="http://ws.gedi.pt" 
xmlns="http://www.w3.org/2001/XMLSchema">
    <import The first 
thnamespace="http://oasisNamesSpecificationUblSchemaXsdInvoice2"/>
    <element name="invDoc" type="xsd:anyType"/>
   </schema>
  </wsdl:types>
    <wsdl:message name="receiveResponse">
    </wsdl:message>
    <wsdl:message name="receiveRequest">
       <wsdl:part element="tns2:invDoc" name="invDoc"/>
    </wsdl:message>
    <wsdl:portType name="ReceiveInvoice">
       <wsdl:operation name="receive" parameterOrder="invDoc">
          <wsdl:input message="impl:receiveRequest" name="receiveRequest"/>
          <wsdl:output message="impl:receiveResponse" 
name="receiveResponse"/>
       </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="InvoiceReceiverSoapBinding" 
type="impl:ReceiveInvoice">
       <wsdlsoap:binding style="document" 
transport="http://schemas.xmlsoap.org/soap/http"/>
       <wsdl:operation name="receive">
          <wsdlsoap:operation soapAction=""/>
          <wsdl:input name="receiveRequest">
             <wsdlsoap:body use="literal"/>
          </wsdl:input>
          <wsdl:output name="receiveResponse">
             <wsdlsoap:body use="literal"/>
          </wsdl:output>
       </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="ReceiveInvoiceService">
       <wsdl:port binding="impl:InvoiceReceiverSoapBinding" 
name="InvoiceReceiver">
          <wsdlsoap:address 
location="http://localhost:8080/WS/services/InvoiceReceiver"/>
       </wsdl:port>
    </wsdl:service>
</wsdl:definitions>


If I do a reload on the wsdl the line:

<import namespace="http://oasisNamesSpecificationUblSchemaXsdInvoice2"/>

disappears... and in the logs appears this:

- The class oasisNamesSpecificationUblSchemaXsdInvoice2.InvoiceDocument 
does not contain a default constructor, which is a requirement for a 
bean class.  The class cannot be converted into an xml schema type.  An 
xml schema anyType will be used to define this class in the wsdl file.

Can't use a bean as a parameter in the receive method?

What my client does is to build an InvoiceDocument type document and
send it to InvoceReceiver service.

If you print a sample document before sendig what you get is:
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
xmlns:urn="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
   <urn:IssueDate>2007-02-06+00:00</urn:IssueDate>
</Invoice>

But when I invoke the service I get:

AxisFault
  faultCode: {http://xml.apache.org/axis/}Client
  faultSubcode:
  faultString: No such operation 'Invoice'
  faultActor:
  faultNode:
  faultDetail:
	{http://xml.apache.org/axis/}hostname:kheijo

No such operation 'Invoice'
	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(AbstractSAXParser.java:601)
	at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1772)
	at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2923)
	at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:645)
	at 
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
	at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:508)
	at 
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
	at 
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
	at 
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
	at 
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
	at 
com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
	at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
	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:1792)
	at pt.gedi.ws.client.SendInvoice.send(SendInvoice.java:22)
	at ubl.CreateInvoice.main(CreateInvoice.java:17)

Why is it looking for a operation with name "Invoice" ??? It is clearly 
specified that the operation is receive, either in service client and 
server.


Thanks in advance,
Pedro Silva

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Mime
View raw message