Hi
In the Apache Tuscany Incubator we are using the Axis2 Java2WSDL tooling. We
generate document/literal/wrapped wsdl (the default I believe for java2WSDL)
and in Tuscany we are using the JAX-WS V2 specification as a guide to what
constitutes wrapped WSDL. We are coming up to our 1.0 release (in a few
weeks time) and have run into a couple of issues where we need to decide
quickly whether we are using the Axis2 tools incorrectly or whether we need
to implement a work around.
Note. We are running with Axis2 1.2 in Tuscany currently but I did the
generation below with Axis2 1.3 just to see if anything had changed in the
latest version.
For the interface:
public interface TestServiceParam {
public String foo();
}
Axis1.3 Java2WSDL produces
...
<wsdl:types>
<xs:schema xmlns:ns=" http://test" attributeFormDefault="qualified"
elementFormDefault="qualified" targetNamespace=" http://test">
<xs:element name="fooResponse">
<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="fooRequest"/>
<wsdl:message name="fooResponse">
<wsdl:part name="parameters" element="ns0:fooResponse"/>
</wsdl:message>
<wsdl:portType name="TestServiceParamPortType">
<wsdl:operation name="foo">
<wsdl:input message="ns0:fooRequest" wsaw:Action="urn:foo"/>
<wsdl:output message="ns0:fooResponse"
wsaw:Action="urn:fooResponse"/>
</wsdl:operation>
</wsdl:portType>
...
I was expecting the following. I've added + to the lines that have been
added.
...
<wsdl:types>
<xs:schema xmlns:ns=" http://test" attributeFormDefault="qualified"
elementFormDefault="qualified" targetNamespace=" http://test">
+ <xs:element name="foo">
+ <xs:complexType/>
+ </xs:element>
<xs:element name="fooResponse">
<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="fooRequest">
+ <wsdl:part name="parameters" element="ns0:foo"/>
</wsdl:message>
<wsdl:message name="fooResponse">
<wsdl:part name="parameters" element="ns0:fooResponse"/>
</wsdl:message>
<wsdl:portType name="TestServiceParamPortType">
<wsdl:operation name="foo">
<wsdl:input message="ns0:fooRequest" wsaw:Action="urn:foo"/>
<wsdl:output message="ns0:fooResponse"
wsaw:Action="urn:fooResponse"/>
</wsdl:operation>
</wsdl:portType>
...
Is the current output produced by design and if so why is it this way?
Are there options I can use to make java2WSDL generate the form I would
like?
For the interface
public interface TestServiceReturn {
public void foo(String param);
}
Axis1.3 Java2WSDL produces
<wsdl:types>
<xs:schema xmlns:ns=" http://test" attributeFormDefault="qualified"
elementFormDefault="qualified" targetNamespace=" http://test">
<xs:element name="foo">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="param0"
nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</wsdl:types>
<wsdl:message name="fooRequest">
<wsdl:part name="parameters" element="ns0:foo"/>
</wsdl:message>
<wsdl:portType name="TestServiceReturnPortType">
<wsdl:operation name="foo">
<wsdl:input message="ns0:fooRequest" wsaw:Action="urn:foo"/>
</wsdl:operation>
</wsdl:portType>
How did Axis2 decide to produce a one way message here?
Is there a way I can ask java2WSDL to produce a 2 way message in this
situation?
I've looked in the mail lists and in JIRA and I don't see mention of this
but I'm fairly new to the resources that Axis2 has to offer so there's a
good chance I'm not looking in the right place or with the right search
term. Apologies if it's staring me in the face.
Thanks
Simon Laws
Apache Tuscany Incubator