You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by "Brian J. Sayatovic" <tr...@trinition.org> on 2004/12/01 03:15:53 UTC
Re: WSDL definitions targetNamespace vs. schema(s) targetNamespace
For what its worth, I figured out the source of the double schema.
Although my custom Serializers were coded to use a specific namespace, I
had not updated the namespace of the type mapping in the WSDD:
<typeMapping qname="list:ListKey" xmlns:list="http://localhost/List"
When generateWSDL gets called, it uses the methods defined in the class
beign puiblished RPC style to find the parameter types -- and for the
methods which had a ListKey parameter, it was using the typeMapping
which told it to use the shorter namespace. By changing the type mapping...
<typeMapping qname="list:ListKey"
xmlns:list="http://localhost:8081/List/services/List"
... to match what I had coded in my serializers, I was able to eliminate
the second name space and keep everything in the first.
I still would like to know how to change the target namespace of the
whole wsdl:definitions.
Regards,
Brian.
Brian J. Sayatovic wrote:
> I'm trying to use the ?WSDL generating capabilities of Axis to
> generate a WSDL Consumable by a non-Axis client, Laszlo. However is
> limited in that it expects the targetNamespace of the schema to be the
> same as the targetNamespace of the wsdl:definitions.
>
> The wsdl:definitions targetNamespace appears to be the full path to my
> service:
>
> <wsdl:definitions
> targetNamespace="http://localhost:8081/List/services/List" ...
>
> However, my schema namespace isn't so simple. In fact, I have two
> schemas for some reason. They are:
>
> <wsdl:types>
> <schema
> targetNamespace="http://localhost:8081/List/services/List"
> xmlns="http://www.w3.org/2001/XMLSchema">
> <import namespace="http://localhost/List" />
> <import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
>
> </schema>
> <schema targetNamespace="http://localhost/List"
> xmlns="http://www.w3.org/2001/XMLSchema">
> <import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
>
> <complexType name="ListKey">
> <all>
> <element name="value" type="xsd:string" />
> </all>
> </complexType>
> <complexType name="ListOfThings">
> <all>
> <element name="key" type="impl:ListKey" />
> </all>
> </complexType>
> </schema>
> </wsdl:types>
>
> In the interest of full disclosure, I had to create custom Serializers
> because Laszlo also can't handle an xsd:sequence, so I'm using an
> xsd:all for my complexTypes. Here's the writeSchema method for one of
> my types:
>
> public Element writeSchema(Class javaType, Types types) throws
> Exception {
> Element complexTypeElement = types.createElement("complexType");
> complexTypeElement.setAttribute("name", "ListKey");
> Element allElement = types.createElement("all");
> complexTypeElement.appendChild(allElement);
> Element elementElement = types.createElement("element");
> elementElement.setAttribute("name", "value");
> elementElement.setAttribute("type", "xsd:string");
> allElement.appendChild(elementElement);
>
> types.writeSchemaElement(ListManagerAxisDelegate.NAMESPACE,
> complexTypeElement);
>
> return complexTypeElement;
> }
>
> And elsewhere, I have ListManagerAxisDelegate.NAMESPACE set to be:
>
> http://localhost:8081/List/services/List
>
> So, I need to figure out who to get the targetNamespace of the schema
> with my types to match the targetNamespace of my wsdl:definitions.
> The thing is, I thought I took care of that by using the
> writeSchemaElemnt... but that just ended up creatign an additional schema!
>
>
> Any ideas?
>
> Regards,
> Brian.
>
>
>