Hi,
Overview: The generated wsdl doesn't validate & the generated wsdl chokes
....
I'm trying something very simple. I'm using the latest axis2 1.3 RC3
nightly. I'm using this class as input to Java2WSDL
package quote.intfc;
public interface Quotable {
public String getQuote();
}
So there is 1 method & it takes no input parameters and it returns a string.
The relevant part of the build.xml is
<java2wsdl outputfilename="${service.wsdl}"
className="${interface.class}"
outputLocation="${build.dir}\wsdl"
targetNamespace="${service.namespace}"
servicename="${service.name}"
schemaTargetNamespace="${service.data.namespace}">
</java2wsdl>
The generated wsdl (included at the end) doesn't validate with XMLSpy. I
think it should or am I mistaken? I get complaints about
attribute 'part' in extensibility element '<mime:content>' refers to part
'getQuote' which could not be found in message 'getQuoteRequest' which
seems to be from this fragment
<http:operation location="RandomQuoteWS/getQuote"/>
<wsdl:input>
<mime:content part="getQuote" type="text/xml"/>
</wsdl:input>
<wsdl:output>
<mime:content part="getQuote" type="text/xml"/>
</wsdl:output>
</wsdl:operation>
Also, I'm seeing this kind of message:
extensibility element '<soap12:binding>' might be part of an unsupported
WSDL extension because it is not in namespace '
http://schemas.xmlsoap.org/wsdl/soap' or '
http://schemas.xmlsoap.org/wsdl/http/' and therefore will not be validated
Are you all using XMLSpy? Is there something I need to do to make it
happily validate this wsdl?
Thinking that maybe XMLSpy is just complaining erroneously, I moved along
and tried to use the wsdl to generate code. The part from ant is
<java classname="org.apache.axis2.wsdl.WSDL2Java"
fork="true" classpathref="${axis2.classpath}">
<arg value="-uri"/>
<arg file="${build.dir}/wsdl/${service.wsdl}"/>
<arg value="-o"/>
<arg file="${build.dir}"/>
<arg value="-p"/>
<arg value="${service.java.packageName}"/>
<arg value="-ss"/>
<arg value="-g"/>
<arg value="-sd"/>
<arg value="-t"/>
<arg value="-d"/>
<arg value="-s"/>
<arg value="adb"/>
</java>
(yes, I'm trying adb and after I post this, I will go back to xmlbeans)
and I get
Exception in thread "main"
org.apache.axis2.wsdl.codegen.CodeGenerationException: Error parsing WSDL
at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.<init>(
CodeGenerationEngine.java:153)
at org.apache.axis2.wsdl.WSDL2Code.main(WSDL2Code.java:35)
at org.apache.axis2.wsdl.WSDL2Java.main(WSDL2Java.java:24)
Caused by: java.lang.NullPointerException
at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.<init>(
CodeGenerationEngine.java:129)
... 2 more
Java Result: 1
So, is this reasonable? Is there something wrong with my input interface?
Or are there options/settings I should be using?
Thanks for any & all help.
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:axis2="http://service.quote" xmlns:ns1="http://org.apache.axis2/xsd"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:ns0="
http://data.quote" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:mime="
http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="
http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="
http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="
http://service.quote">
<wsdl:types>
<xs:schema xmlns:ns="http://data.quote"
attributeFormDefault="qualified" elementFormDefault="qualified"
targetNamespace="http://data.quote">
<xs:element name="getQuoteResponse">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="return"
nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</wsdl:types>
<wsdl:message name="getQuoteRequest"/>
<wsdl:message name="getQuoteResponse">
<wsdl:part name="parameters" element="ns0:getQuoteResponse"/>
</wsdl:message>
<wsdl:portType name="RandomQuoteWSPortType">
<wsdl:operation name="getQuote">
<wsdl:input xmlns:wsaw="
http://www.w3.org/2006/05/addressing/wsdl" message="axis2:getQuoteRequest"
wsaw:Action="urn:getQuote"/>
<wsdl:output xmlns:wsaw="
http://www.w3.org/2006/05/addressing/wsdl" message="axis2:getQuoteResponse"
wsaw:Action="urn:getQuoteResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="RandomQuoteWSSOAP11Binding"
type="axis2:RandomQuoteWSPortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document"/>
<wsdl:operation name="getQuote">
<soap:operation soapAction="urn:getQuote" 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="RandomQuoteWSSOAP12Binding"
type="axis2:RandomQuoteWSPortType">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document"/>
<wsdl:operation name="getQuote">
<soap12:operation soapAction="urn:getQuote" 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="RandomQuoteWSHttpBinding"
type="axis2:RandomQuoteWSPortType">
<http:binding verb="POST"/>
<wsdl:operation name="getQuote">
<http:operation location="RandomQuoteWS/getQuote"/>
<wsdl:input>
<mime:content type="text/xml" part="getQuote"/>
</wsdl:input>
<wsdl:output>
<mime:content type="text/xml" part="getQuote"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="RandomQuoteWS">
<wsdl:port name="RandomQuoteWSSOAP11port_http"
binding="axis2:RandomQuoteWSSOAP11Binding">
<soap:address location="
http://localhost:8080/axis2/services/RandomQuoteWS"/>
</wsdl:port>
<wsdl:port name="RandomQuoteWSSOAP12port_http"
binding="axis2:RandomQuoteWSSOAP12Binding">
<soap12:address location="
http://localhost:8080/axis2/services/RandomQuoteWS"/>
</wsdl:port>
<wsdl:port name="RandomQuoteWSHttpport"
binding="axis2:RandomQuoteWSHttpBinding">
<http:address location="
http://localhost:8080/axis2/services/RandomQuoteWS"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:axis2="http://service.quote" xmlns:ns1="http://org.apache.axis2/xsd"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:ns0="
http://data.quote" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:mime="
http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="
http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="
http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="
http://service.quote">
<wsdl:types>
<xs:schema xmlns:ns="http://data.quote"
attributeFormDefault="qualified" elementFormDefault="qualified"
targetNamespace="http://data.quote">
<xs:element name="getQuoteResponse">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="return"
nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</wsdl:types>
<wsdl:message name="getQuoteRequest"/>
<wsdl:message name="getQuoteResponse">
<wsdl:part name="parameters" element="ns0:getQuoteResponse"/>
</wsdl:message>
<wsdl:portType name="RandomQuoteWSPortType">
<wsdl:operation name="getQuote">
<wsdl:input xmlns:wsaw="
http://www.w3.org/2006/05/addressing/wsdl" message="axis2:getQuoteRequest"
wsaw:Action="urn:getQuote"/>
<wsdl:output xmlns:wsaw="
http://www.w3.org/2006/05/addressing/wsdl" message="axis2:getQuoteResponse"
wsaw:Action="urn:getQuoteResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="RandomQuoteWSSOAP11Binding"
type="axis2:RandomQuoteWSPortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document"/>
<wsdl:operation name="getQuote">
<soap:operation soapAction="urn:getQuote" 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="RandomQuoteWSSOAP12Binding"
type="axis2:RandomQuoteWSPortType">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document"/>
<wsdl:operation name="getQuote">
<soap12:operation soapAction="urn:getQuote" 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="RandomQuoteWSHttpBinding"
type="axis2:RandomQuoteWSPortType">
<http:binding verb="POST"/>
<wsdl:operation name="getQuote">
<http:operation location="RandomQuoteWS/getQuote"/>
<wsdl:input>
<mime:content type="text/xml" part="getQuote"/>
</wsdl:input>
<wsdl:output>
<mime:content type="text/xml" part="getQuote"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="RandomQuoteWS">
<wsdl:port name="RandomQuoteWSSOAP11port_http"
binding="axis2:RandomQuoteWSSOAP11Binding">
<soap:address location="
http://localhost:8080/axis2/services/RandomQuoteWS"/>
</wsdl:port>
<wsdl:port name="RandomQuoteWSSOAP12port_http"
binding="axis2:RandomQuoteWSSOAP12Binding">
<soap12:address location="
http://localhost:8080/axis2/services/RandomQuoteWS"/>
</wsdl:port>
<wsdl:port name="RandomQuoteWSHttpport"
binding="axis2:RandomQuoteWSHttpBinding">
<http:address location="
http://localhost:8080/axis2/services/RandomQuoteWS"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>