Bij het gebruik van de tool wsimport om een java proxy te genereren op basis van een publieke WSDL kan het voorkomen dat je volgende foutmelding krijgt:
Two declarations cause a collision in the ObjectFactory class.
Deze fout is te wijten aan het feit dat twee klasses dezelfde naam krijgen, omdat wsimport standaard complex types die reeds eindigen op 'type' niet nog eens van het suffix 'type' gaat voorzien.
Dit probleem kan worden vermeden door bepaalde parameters mee te geven aan wsimport. Om bijvoorbeeld een proxy te genereren voor CRAB WS-T gebruik je het volgende commando:
wsimport.bat -Xendorsed -s crab -keep -extension -Xnocompile -b crab_wst.xjb http://grab.beta.agiv.be/WST/CRAB_WST.svc?wsdl
Het bestand crab_wst.xjb wordt in de working directory geplaatst en bevat volgende instructie:
<jaxb:bindings version="1.0"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://java.sun.com/xml/ns/jaxws">
<jaxb:bindings schemaLocation="http://grab.beta.agiv.be/WST/CRAB_WST.svc?xsd=xsd2" node="/xs:schema">
<jaxb:globalBindings underscoreBinding="asCharInWord" />
<jaxb:schemaBindings>
<jaxb:nameXmlTransform>
<jaxb:typeName suffix="Type" />
</jaxb:nameXmlTransform>
</jaxb:schemaBindings>
</jaxb:bindings>
</jaxb:bindings>
Het gevolg is dat je dan zowel een klasse CRABFieldType als een klasse CRABFieldTypeType hebt.
Om de laatste versie (2.0 early access release) van Metro te doen werken met een Java versie die al een oudere JAX-WS stack bevat, moet je het endorsed mechanisme gebruiken. Plaats hiertoe de volgende jars:
jaxb-api.jar, jaxws-api.jar (beide uit jaxws-ri lib folder) en webservices-api.jar (uit metro lib folder) in de nog zelf aan te maken endorsed folder (%JAVA_HOME%\jre\lib\endorsed).