You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by "Simon Laws (JIRA)" <de...@tuscany.apache.org> on 2009/10/06 16:43:31 UTC
[jira] Updated: (TUSCANY-3283) Generated WSDL not WS-I compliant in
some cases
[ https://issues.apache.org/jira/browse/TUSCANY-3283?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Simon Laws updated TUSCANY-3283:
--------------------------------
Fix Version/s: Java-SCA-1.5.2
Didn't get this ready for 1.5.1 but I'd like to get it out so moving to 1.5.2
> Generated WSDL not WS-I compliant in some cases
> -----------------------------------------------
>
> Key: TUSCANY-3283
> URL: https://issues.apache.org/jira/browse/TUSCANY-3283
> Project: Tuscany
> Issue Type: Bug
> Components: Java SCA Axis Binding Extension
> Affects Versions: Java-SCA-1.5.1
> Environment: All
> Reporter: Simon Laws
> Assignee: Simon Laws
> Fix For: Java-SCA-1.5.2
>
>
> Discussed here - http://www.mail-archive.com/dev%40tuscany.apache.org/msg09543.html
> For an interface such as..
> package service;
> import org.osoa.sca.annotations.Service;
> @Service(SomeService.class)
> public class SomeServiceImpl implements SomeService {
> public AnObject getUsingString(String stringParam) {
> System.out.println("Param value:" + stringParam);
> return getAnObject(stringParam);
> }
> private AnObject getAnObject(String stringParam) {
> return new AnObject(stringParam + "123", 123);
> }
> public AnObject getUsingMoreComplexObject(MoreComplexObject
> moreComplexParam) {
> System.out.println("Param value:" + moreComplexParam.getStringParam());
> return getAnObject(moreComplexParam.getStringParam());
> }
> }
> Tuscany generates the WSDL types...
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions name="SomeServiceService"
> targetNamespace="http://service/" xmlns:tns="http://service/"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:xs="http://www.w3.org/2001/XMLSchema"
> xmlns:SOAP="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:SOAP11="http://schemas.xmlsoap.org/wsdl/soap/">
> <wsdl:types>
> <xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
> <xs:complexType name="anObject">
> <xs:sequence>
> <xs:element minOccurs="0" name="someOtherRetValue" type="xs:int" />
> <xs:element minOccurs="0" name="someRetValue" type="xs:string" />
> </xs:sequence>
> </xs:complexType>
> <xs:complexType name="moreComplexObject">
> <xs:sequence>
> <xs:element minOccurs="0" name="intParam" type="xs:int" />
> <xs:element minOccurs="0" name="stringParam" type="xs:string" />
> <xs:element minOccurs="0" name="stringParam2" type="xs:string" />
> </xs:sequence>
> </xs:complexType>
> </xs:schema>
> <xs:schema attributeFormDefault="qualified"
> elementFormDefault="unqualified" targetNamespace="http://service/"
> xmlns:xs="http://www.w3.org/2001/XMLSchema">
> <xs:import />
> <xs:element name="getUsingString">
> <xs:complexType>
> <xs:sequence>
> <xs:element minOccurs="0" name="arg0" nillable="true"
> type="xs:string" />
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> <xs:element name="getUsingMoreComplexObjectResponse">
> <xs:complexType>
> <xs:sequence>
> <xs:element minOccurs="0" name="return" nillable="true"
> type="anObject" />
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> <xs:element name="getUsingMoreComplexObject">
> <xs:complexType>
> <xs:sequence>
> <xs:element minOccurs="0" name="arg0" nillable="true"
> type="moreComplexObject" />
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> <xs:element name="getUsingStringResponse">
> <xs:complexType>
> <xs:sequence>
> <xs:element minOccurs="0" name="return" nillable="true"
> type="anObject" />
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> </xs:schema>
> </wsdl:types>
> However the wsgen JAXWS tooling generates the following schema for the WSDL...
> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
> <xs:schema version="1.0" targetNamespace="http://service/"
> xmlns:tns="http://service/"
> xmlns:xs="http://www.w3.org/2001/XMLSchema">
> <xs:element name="getUsingMoreComplexObject"
> type="tns:getUsingMoreComplexObject"/>
> <xs:element name="getUsingMoreComplexObjectResponse"
> type="tns:getUsingMoreComplexObjectResponse"/>
> <xs:element name="getUsingString" type="tns:getUsingString"/>
> <xs:element name="getUsingStringResponse" type="tns:getUsingStringResponse"/>
> <xs:complexType name="getUsingMoreComplexObject">
> <xs:sequence>
> <xs:element name="arg0" type="tns:moreComplexObject" minOccurs="0"/>
> </xs:sequence>
> </xs:complexType>
> <xs:complexType name="moreComplexObject">
> <xs:sequence>
> <xs:element name="intParam" type="xs:int" minOccurs="0"/>
> <xs:element name="stringParam" type="xs:string" minOccurs="0"/>
> <xs:element name="stringParam2" type="xs:string" minOccurs="0"/>
> </xs:sequence>
> </xs:complexType>
> <xs:complexType name="getUsingMoreComplexObjectResponse">
> <xs:sequence>
> <xs:element name="return" type="tns:anObject" minOccurs="0"/>
> </xs:sequence>
> </xs:complexType>
> <xs:complexType name="anObject">
> <xs:sequence>
> <xs:element name="someOtherRetValue" type="xs:int" minOccurs="0"/>
> <xs:element name="someRetValue" type="xs:string" minOccurs="0"/>
> </xs:sequence>
> </xs:complexType>
> <xs:complexType name="getUsingString">
> <xs:sequence>
> <xs:element name="arg0" type="xs:string" minOccurs="0"/>
> </xs:sequence>
> </xs:complexType>
> <xs:complexType name="getUsingStringResponse">
> <xs:sequence>
> <xs:element name="return" type="tns:anObject" minOccurs="0"/>
> </xs:sequence>
> </xs:complexType>
> </xs:schema>
> Note that difference is that the schema types anObject and
> moreComplexObject are generated into a namespace for wsgen and not
> for Tuscany.
> Now looking back at various related specs...
> WS-I [1] says...
> R2105 All xsd:schema elements contained in a wsdl:types element of a
> DESCRIPTION MUST have a targetNamespace attribute with a valid and
> non-null value, UNLESS the xsd:schema element has xsd:import and/or
> xsd:annotation as its only child element(s)
> And JAX-WS 2.1 I believe is intended to be WS-I compliant.
> The wrinkle then seems to be that the JAXB spec defines a default Java
> to XSD mapping where types are not placed in a namespace unless you
> configure the Java class with annotations. The spec does talk of
> "customizations" and I guess this is what the wsgen tool is doing but
> I can't find any explicit statement about what these customizations
> might be other than those provided by code annotations. This page [3]
> suggests that it's sneaking behind the public JAXB API to make this
> happen.
> I found that the subject of the JAXB mapping had been discussed
> before, e.g. [2], and I do remember testing that the no namespace
> schema inclusion was actually valid. However I can't put my finger on
> anything to do with customizing the mapping that has been discussed
> here and why we aren't doing it.
> Anyone know how to get JAXB to generate schema that are WS-I compliant
> in this case?
> I note that Axis have witten their own generator but I remember a long
> time ago we used the Axis code and the stopped using it in favour of
> the JAXB code for some reason. Anyone remember why (am searching the
> ML also of course).
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.