<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<soap:Header/>
<soap:Body>
<xs:QueryProductionCalendarRequest/>
</soap:Body>
</soap:Envelope>
Due to these empty request elements our customer is unable to generate a java client using the WSDL. Therfore, it's very eminent that I address this issue.The WSDL looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:axis2="http://ws.apache.org/axis2" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://ws.apache.org/axis2">
<wsdl:documentation>FlexisService</wsdl:documentation>
<wsdl:types>
<xs:element name="QueryProductionCalendarRequest" type="QueryProductionCalendarRequestType"/>
<xs:complexType name="QueryProductionCalendarRequestType">
<xs:sequence>
<xs:element name="Plant" type="xs:string"/>
<xs:element name="Line" type="xs:string"/>
<xs:element name="StartDate" type="xs:date" minOccurs="0"/>
<xs:element name="EndDate" type="xs:date" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:element name="QueryProductionCalendarResponse" type="QueryProductionCalendarResponseType"/>
<xs:complexType name="QueryProductionCalendarResponseType">
<xs:sequence>
<xs:element name="Plant" type="xs:string"/>
<xs:element name="Line" type="xs:string"/>
<xs:element name="ProductionDayList" type="ProductionDayListType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ProductionDayListType">
<xs:sequence>
<xs:element name="ProductionDay" type="ProductionDayType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ProductionDayType">
<xs:sequence>
<xs:element name="ProductionDate" type="xs:date"/>
<xs:element name="ProductionRate" type="xs:integer"/>
<xs:element name="ProductionShiftList" type="ProductionShiftListType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ProductionShiftListType">
<xs:sequence>
<xs:element name="ProductionShift" type="ProductionShiftType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ProductionShiftType">
<xs:sequence>
<xs:element name="Name" type="xs:string"/>
<xs:element name="ShiftRate" type="xs:integer"/>
<xs:element name="StartDateTime" type="xs:dateTime"/>
<xs:element name="EndDateTime" type="xs:dateTime"/>
</xs:sequence>
</xs:complexType>
</wsdl:types>
<wsdl:message name="QueryProductionCalendarRequestMessage">
<wsdl:part name="parameters" element="xs:QueryProductionCalendarRequest"/>
</wsdl:message>
<wsdl:message name="QueryProductionCalendarResponseMessage">
<wsdl:part name="parameters" element="xs:QueryProductionCalendarResponse"/>
</wsdl:message>
<wsdl:portType name="FlexisServicePortType">
<wsdl:operation name="QueryProductionCalendar">
<wsdl:input message="axis2:QueryProductionCalendarRequestMessage" wsaw:Action="urn:QueryProductionCalendar"/>
<wsdl:output message="axis2:QueryProductionCalendarResponseMessage" wsaw:Action="urn:QueryProductionCalendarResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="FlexisServiceSoap11Binding" type="axis2:FlexisServicePortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<wsdl:operation name="QueryProductionCalendar">
<soap:operation soapAction="urn:QueryProductionCalendar" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="FlexisServiceSoap12Binding" type="axis2:FlexisServicePortType">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<wsdl:operation name="QueryProductionCalendar">
<soap12:operation soapAction="urn:QueryProductionCalendar" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="FlexisServiceHttpBinding" type="axis2:FlexisServicePortType">
<http:binding verb="POST"/>
<wsdl:operation name="QueryProductionCalendar">
<http:operation location="FlexisService/QueryProductionCalendar"/>
<wsdl:input>
<mime:content type="text/xml" part="QueryProductionCalendar"/>
</wsdl:input>
<wsdl:output>
<mime:content type="text/xml" part="QueryProductionCalendar"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="FlexisService">
<soap:address location='http://localhost:8080/axis2/services/FlexisService'/>
</wsdl:service>
</wsdl:definitions>
Can someone please nudge me in the right direction as to why that's happening?
Related
I try to implement a SOAP-webservice with spring boot. Everything seems normal until I want to call it. I get the following Message:
No global element for root was found: {urn:com.companyname.dto}CalloutRequest
The wsdl looks the following:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="urn:com.companyname"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:tns="urn:com.companyname"
xmlns:dto="urn:com.companyname.dto">
<wsdl:types>
<xs:schema targetNamespace="urn:com.companyname">
<xs:import schemaLocation="CalloutServiceDto.xsd" namespace="urn:com.companyname.dto"/>
</xs:schema>
</wsdl:types>
<wsdl:message name="CalloutRequestMessage">
<wsdl:part name="request" element="dto:CalloutRequest"></wsdl:part>
</wsdl:message>
<wsdl:message name="CalloutResponseMessage">
<wsdl:part name="response" element="dto:CalloutResponse"></wsdl:part>
</wsdl:message>
<wsdl:portType name="CalloutPortType">
<wsdl:operation name="callMeldungAusgang">
<wsdl:documentation>Wird eine KVUVMeldung zurueck ins SHIP erzeugt, erfolgt dies ueber diesen Service.
</wsdl:documentation>
<wsdl:input message="tns:CalloutRequestMessage"></wsdl:input>
<wsdl:output message="tns:CalloutResponseMessage"></wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CalloutBinding" type="tns:CalloutPortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
<wsdl:operation name="callMeldungAusgang">
<soap:operation soapAction=""/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="CalloutService">
<wsdl:port name="CalloutPort" binding="tns:CalloutBinding">
<soap:address location="http://localhost:8080/Callout" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
The xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
targetNamespace="urn:com.companyname.dto"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:tns="urn:com.companyname.dto"
elementFormDefault="qualified">
<xs:element name="CalloutRequest"
type="tns:CalloutRequestType" />
<xs:element name="CalloutResponse"
type="tns:CalloutResponseType" />
<xs:complexType name="CalloutRequestType">
<xs:annotation>
<xs:documentation>
Request fuer einen MeldungsAusgang, welcher ins gesendet wird.
e Beinhaltet nur das Response-XML, gehalten als String.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="xml" type="xs:string" minOccurs="1" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="CalloutResponseType">
<xs:annotation>
<xs:documentation>
Die Antwort der MeldungsAusgangs-Service
</xs:documentation>
</xs:annotation>
</xs:complexType>
</xs:schema>
If I call the webservice he gives me the error that there is no root element. I generate my code with wsdl2java and it works just fine. Just when I call the service via http://localhost:8080/Callout it gives me the error.
Thanks in advance
I have been going around this but i can't seem to find the problem. Maybe you can help me, I apologize if the post is a bit long as I have tried to control all the error sources.
I developed 2 web services which are running on a remote server on Amazon, the services can be reach directly trough their http addresses and i can make request to them using SoapUI.
http://x.x.x.x:8080/cAClienteWEB/ConsultarEstado/ConsultarEstado?wsdl
I have an application which consumes those services, i've tried locally with both the services and the consuming app on the same machine and it works like a charm. But when the services are on the remote host the app simply does not reach them even though i have added them from scratch to be consumed from the remote IP. I get the error:
WARNING [org.apache.cxf.phase.PhaseInterceptorChain] (EJB default - 1)
Interceptor for {http://servicios.cA.com/}ConsultarEstado#{http:/
/servicios.cA.com/}consultar has thrown exception, unwinding now: org.apache.cxf.interceptor.Fault: Could not send Message.
......
Caused by: org.apache.cxf.transport.http.HTTPException: HTTP response '404: Not Found'
when communicating with http://localhost:8080/cAClienteWEB/ConsultarEstado/ConsultarEstado
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1561)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1513)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1318)
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:632)
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:570)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:479)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:382)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:335)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:135)
... 56 more
Obviously it is trying to reach them on the localhost where they don't exist. I modified the Jboss Standalone.xml with
<subsystem xmlns="urn:jboss:domain:webservices:1.2">
<modify-wsdl-address>true</modify-wsdl-address>
<wsdl-host>X.X.X.X</wsdl-host>
<wsdl-port>8080</wsdl-port>
<endpoint-config name="Standard-Endpoint-Config"/>
<endpoint-config name="Recording-Endpoint-Config">
<pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM">
<handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/>
</pre-handler-chain>
</endpoint-config>
<client-config name="Standard-Client-Config"/>
</subsystem>
But still it keeps on reaching them in the localhost. From the app i have printed the address from which it is trying to fetch the data and it prints the right remote address.
System.out.println(service.getWSDLDocumentLocation());
Honestly i don't know what else to modify to get it to work.
Here is one of the services wsdl definition
?xml version='1.0' encoding='UTF-8'?><wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://servicios.cometeAlguito.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" name="ConsultarEstado" targetNamespace="http://servicios.cometeAlguito.com/">
<wsdl:types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://servicios.cometeAlguito.com/" elementFormDefault="unqualified" targetNamespace="http://servicios.cometeAlguito.com/" version="1.0">
<xs:element name="consultar" type="tns:consultar"/>
<xs:element name="consultarResponse" type="tns:consultarResponse"/>
<xs:element name="recibo" type="tns:recibo"/>
<xs:complexType name="consultar">
<xs:sequence/>
</xs:complexType>
<xs:complexType name="consultarResponse">
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="return" type="tns:recibo"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="recibo">
<xs:sequence>
<xs:element minOccurs="0" name="combo" type="xs:string"/>
<xs:element minOccurs="0" name="hora" type="xs:string"/>
<xs:element minOccurs="0" name="nombreCliente" type="xs:string"/>
<xs:element minOccurs="0" name="numOrden" type="xs:string"/>
<xs:element minOccurs="0" name="producto" type="xs:string"/>
<xs:element minOccurs="0" name="telefono" type="xs:string"/>
<xs:element minOccurs="0" name="total" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>
<wsdl:message name="consultarResponse">
<wsdl:part element="tns:consultarResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="consultar">
<wsdl:part element="tns:consultar" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="ConsultarEstado">
<wsdl:operation name="consultar">
<wsdl:input message="tns:consultar" name="consultar">
</wsdl:input>
<wsdl:output message="tns:consultarResponse" name="consultarResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="ConsultarEstadoSoapBinding" type="tns:ConsultarEstado">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="consultar">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="consultar">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="consultarResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="ConsultarEstado">
<wsdl:port binding="tns:ConsultarEstadoSoapBinding" name="ConsultarEstadoPort">
<soap:address location="http://X.X.X.X:8080/cAClienteWEB/ConsultarEstado/ConsultarEstado"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Well, just in case anybody is stuck in the same situation.
On the remote host where you put the web service, is where you should modify the Standalone.xml...
To resolve this error, change the jboss configuration for modify-wsdl-address from true to false, this will resolve the issue.
actually, Jboss modifies the wsdl location based on this setting so it could not reach the address.
Hi i'm newbie working with wsdl, xsd and web services... I must generate some class from a wsdl generated in EA.
I found some problems trying to import 2 local schemas on same namespace, so my workaround was include schemas.
But now i find an Error that i can't resolve:
[ERROR] XML type "{http://www.iTEC.aero/AMANSequence}filter" could not be resolved, XML to JAVA binding failed! Please check the wsdl:part "filter" in the wsdl:message " {http://www.iTEC.aero
/AMANSequence}amanMessageFilter". line 75 of ***.wsdl
WSDL
<?xml version='1.0' encoding='UTF-8'?>
<wsdl:definitions name="iSwimService"
targetNamespace="http://www.iTEC.aero/AMANSequence"
xmlns:ns1="http://schemas.xmlsoap.org/soap/http"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.iTEC.aero/AMANSequence"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!--TYPES-->
<wsdl:types>
<xs:schema elementFormDefault="qualified" version="1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:seq="http://www.iTEC.aero/AMANSequence"
targetNamespace="http://www.iTEC.aero/AMANSequence">
<xs:include schemaLocation="AMANFilter.xsd" />
<xs:include schemaLocation="AMANSequence.xsd" />
<xs:element name="filter" type="seq:AMANSequenceFilterType" />
<xs:element name="sequence" type="seq:AMANSequence" />
</xs:schema>
</wsdl:types>
<!-- MESSAGES -->
<wsdl:message name="amanMessageSequence">
<wsdl:part type="tns:sequence" name="sequence" />
</wsdl:message>
<wsdl:message name="amanMessageFilter">
<wsdl:part type="tns:filter" name="filter" />
</wsdl:message>
<wsdl:message name="amanMessageSubscription">
<wsdl:part type="xs:string" name="stakeholderId" />
<wsdl:part type="tns:filter" name="filter" />
</wsdl:message>
<wsdl:message name="amanMessageUnSubscription">
<wsdl:part type="xs:string" name="stakeholderId" />
</wsdl:message>
<wsdl:message name="amanMessageReturn">
<wsdl:part type="xs:string" name="returnValue" />
</wsdl:message>
<wsdl:message name="amanFaultMessage">
<wsdl:part name="operationName" type="xs:string"/>
<wsdl:part name="errorCode" type="xs:string"/>
<wsdl:part name="errorMessage" type="xs:string"/>
</wsdl:message>
<!-- PORT TYPES -->
<wsdl:portType name="AMANSequenceInfo">
<wsdl:operation name="getAMANSequence">
<wsdl:input message="tns:amanMessageFilter" />
<wsdl:output message="tns:amanMessageSequence"/>
<wsdl:fault message="tns:amanFaultMessage" name="faultMessage"/>
</wsdl:operation>
<wsdl:operation name="publishAMANSequence">
<wsdl:input message="tns:amanMessageSequence" />
<wsdl:output message="tns:amanMessageReturn" />
<wsdl:fault message="tns:amanFaultMessage" name="faultMessage"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:portType name="AMANSequenceSubscription">
<wsdl:operation name="subscribeToAMANSequence">
<wsdl:input message="tns:amanMessageSubscription" />
<wsdl:output message="tns:amanMessageReturn" />
<wsdl:fault message="tns:amanFaultMessage" name="faultMessage"/>
</wsdl:operation>
<wsdl:operation name="unsubscribeToAMANSequence">
<wsdl:input message="tns:amanMessageUnSubscription" />
<wsdl:output message="tns:amanMessageReturn" />
<wsdl:fault message="tns:amanFaultMessage" name="faultMessage"/>
</wsdl:operation>
</wsdl:portType>
<!-- BINDING -->
<wsdl:binding name="AMANSequenceInfoSOAP" type="tns:AMANSequenceInfo">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
<!--
return the sequence data according to the filters provided.
if no filter is provided, all the sequence data for this aman is provided
-->
<wsdl:operation name="getAMANSequence">
<soap:operation soapAction="http://www.iTEC.aero/getAMANSequence" />
<wsdl:input>
<soap:body use="literal" namespace="http://www.iTEC.aero/AMANSequence" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" namespace="http://www.iTEC.aero/AMANSequence"/>
</wsdl:output>
</wsdl:operation>
<!--
A request/reply operation deployed in the iMAS ESB.
The invocation of this operation will trigger a request in the iMAS ESB for distributing
this information to several stakeholders in a async way
-->
<wsdl:operation name="publishAMANSequence">
<soap:operation soapAction="http://www.iTEC.aero/publishAMANSequence" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="AMANSequenceSubscriptionSOAP" type="tns:AMANSequenceSubscription">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
<!--
subscribe to the corresponding aman indicating the filter with the information the customer is interested in receiving.
The stakeholderId is also provided in this operation to manage the publication of the information
-->
<wsdl:operation name="subscribeToAMANSequence">
<soap:operation soapAction="" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<!--
unsubscribe to the corresponding aman indicating the filter with the information the customer is interested in receiving.
The stakeholderId is also provided in this operation to manage the publication of the information
-->
<wsdl:operation name="unsubscribeToAMANSequence">
<soap:operation soapAction="" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<!-- SERVICES -->
<wsdl:service name="AMANSequenceInfo">
<wsdl:port binding="tns:AMANSequenceInfoSOAP" name="AMANSequenceInfoService">
<soap:address location="null" />
</wsdl:port>
<wsdl:port binding="tns:AMANSequenceSubscriptionSOAP" name="AMANSequenceSubscriptionService">
<soap:address location="null" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
FILTER XSD
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema version="0.1"
elementFormDefault="qualified"
targetNamespace="http://www.iTEC.aero/AMANSequence"
xmlns:filter="http://www.iTEC.aero/AMANSequence"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="AMANSequenceFilterType">
<xs:sequence>
<xs:element name="filterRows" type="filter:FilterRowType" minOccurs="1" maxOccurs="1" />
<xs:element name="filterColumns" type="filter:FilterColumnsType" minOccurs="1" maxOccurs="1" />
<xs:element name="filterUpdate" type="filter:FilterUpdatedType" minOccurs="1" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="FilterRowType">
<xs:annotation>
<xs:documentation>These filters are based on the ""DomainOfinterest" class in the logical model</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="fixName" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="typeOfFix" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="departureAerodrome" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="destinationAerodrome" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="runwayDirection" type="xs:string" minOccurs="1" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="FilterColumnsType">
<xs:annotation>
<xs:documentation>These filters are based on filter example discussed in the SICG</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="sequenceNumber" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="RunwayId" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="LandingTime" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="CallSign" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="MF" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="OTA" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="TTL" type="xs:string" minOccurs="1" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="FilterUpdatedType">
<xs:annotation>
<xs:documentation>These filters are based on filter example discussed in the SICG</xs:documentation>
</xs:annotation>
<xs:choice>
<xs:element name="periodic" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="sequenceEntryOnChange" type="xs:string" minOccurs="1" maxOccurs="1" />
</xs:choice>
</xs:complexType>
</xs:schema>
If somebody can help ;!!
SOLVED
I changed binding style to document.
Create complexType in the schema for messages with multiple parts and compile without errors or warnings.
I'm using Axis2's wsdl2java to generate a stub for the following WSDL (please note that if names don't match up, it's probably from my obfuscation of the code):
<?xml version="1.0" encoding="UTF-8" standalone="no"?><wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:sch="http://test.com/saucy/schemas" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://test.com/saucy/definitions" targetNamespace="http://test.com/saucy/definitions">
<wsdl:types>
<xs:schema xmlns:wtfd="http://test.com/saucy/schemas" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://test.com/saucy/schemas">
<xs:element name="fubarmanagerRequest">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="1" name="addUsers" type="wtfd:addUsersType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="addUsersType">
<xs:sequence>
<xs:element maxOccurs="unbounded" name="user" type="wtfd:userType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="userType">
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="1" name="emailAddress" type="xs:string"/>
<xs:element maxOccurs="1" minOccurs="1" name="password" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>
<wsdl:message name="fubarmanagerRequest">
<wsdl:part element="sch:fubarmanagerRequest" name="fubarmanagerRequest">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="wtfsaucy">
<wsdl:operation name="fubarmanager">
<wsdl:input message="tns:fubarmanagerRequest" name="fubarmanagerRequest">
</wsdl:input>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="wtfsaucySoap11" type="tns:wtfsaucy">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="fubarmanager">
<soap:operation soapAction=""/>
<wsdl:input name="fubarmanagerRequest">
<soap:body use="literal"/>
</wsdl:input>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="wtfsaucyService">
<wsdl:port binding="tns:wtfsaucySoap11" name="wtfsaucySoap11">
<soap:address location="http://localhost:8080/mailerManagerService/"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
However, it seems like the generated stub isn't providing a means for me to retrieve the response XML:
/**
* Auto generated method signature
*
*/
public void fubarManager(com.obfuscated.fubarRequest fubarRequest0
) throws java.rmi.RemoteException
I'm able to get the response XML in SoapUI, but How can I retrieve it through the web generated service client code? Is something missing from my WSDL? Are there additional options I should be passing to wsdl2java?
I had to make sure my WSDL included a section for the response message:
<wsdl:portType name="wtfDirect">
<wsdl:operation name="MailManager">
<wsdl:input message="tns:MailManagerRequest" name="MailManagerRequest">
</wsdl:input>
<wsdl:output message="tns:MailManagerResponse" name="MailManagerResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
I have this WSDL File already given .
When i used the Axis2 tool wsdl2java -uri StockQuoteService.wsdl
<wsdl:definitions xmlns:axis2="http://quickstart.samples/"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:ns="http://quickstart.samples/xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://quickstart.samples/">
<wsdl:types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="qualified" elementFormDefault="qualified"
targetNamespace="http://quickstart.samples/xsd">
<xs:element name="getPrice">
<xs:complexType>
<xs:sequence>
<xs:element name="symbol" nillable="true" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getPriceResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="return" nillable="true" type="xs:double" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</wsdl:types>
<wsdl:message name="getPriceMessage">
<wsdl:part name="part1" element="ns:getPrice" />
</wsdl:message>
<wsdl:message name="getPriceResponseMessage">
<wsdl:part name="part1" element="ns:getPriceResponse" />
</wsdl:message>
<wsdl:portType name="StockQuoteServicePortType">
<wsdl:operation name="getPrice">
<wsdl:input message="axis2:getPriceMessage" />
<wsdl:output message="axis2:getPriceResponseMessage" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="StockQuoteServiceSOAP11Binding" type="axis2:StockQuoteServicePortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document" />
<wsdl:operation name="getPrice">
<soap:operation soapAction="urn:getPrice" style="document" />
<wsdl:input>
<soap:body use="literal" namespace="http://quickstart.samples/" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" namespace="http://quickstart.samples/" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="StockQuoteService">
<wsdl:port name="StockQuoteServiceSOAP11port" binding="axis2:StockQuoteServiceSOAP11Binding">
<soap:address
location="http://localhost:8080/axis2/services/StockQuoteService" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
What i was expecting is the java code that should be
package samples.quickstart;
import java.util.HashMap;
public class StockQuoteService {
private HashMap map = new HashMap();
public double getPrice(String symbol) {
Double price = (Double) map.get(symbol);
if(price != null){
return price.doubleValue();
}
return 42.00;
}
}
But when i ran wsdl2java -uri StockQuoteService.wsdl
i got this code of java files , where i was expecting the above java file
1.StockQuoteServiceCallbackHandler
2.StockQuoteServiceStub
but not StockQuoteService.java
package samples.quickstart;
import java.util.HashMap;
public class StockQuoteService {
private HashMap map = new HashMap();
public double getPrice(String symbol) {
Double price = (Double) map.get(symbol);
if(price != null){
return price.doubleValue();
}
return 42.00;
}
}
please tell me why so ??
wsdl2java command generates client code to invoke your axis2 service (i.e. Stub and callback handler classes). The business logic inside getPrice() method has nothing to do with your wsdl.