Thanks for your answer, Glen. So, If I understand well, there is definitely a bug when ASM and Schema Location are both used. I will create an issue on the CXF jira about ASM/SchemaLocation.
Thanks for the hint on using the maven codegen plugin. I will use it to generate the DTOs (instead of the sun jaxb plugin). Regards, -- Tom On Mon, Jul 12, 2010 at 21:06, Glen Mazza <[email protected]> wrote: > > (Note, I had to mangle the word "C r e d i t" below because it activated > Nabble's spam detector) > > I didn't know about ASM: http://asm.ow2.org/. BTW, your sample POM is > missing this repository in case others want to test it: > > <pluginRepositories> > <pluginRepository> > <id>maven2-repository.dev.java.net</id> > <name>Java.net Maven 2 Repository</name> > <url>http://download.java.net/maven/2/</url> > </pluginRepository> > </pluginRepositories> > > Anyway, I looked at the WSDL generated at > http://localhost:8080/creditcard/creditCard?wsdl with both the pom with ASM > (which doesn't work) and the pom without it (which apparently does work). > They're different for some reason. The failing WSDL has this schema > included: > > <xsd:schema attributeFormDefault="unqualified" > elementFormDefault="unqualified" > targetNamespace="http://cretcard.example.com/" > xmlns:tns="http://critcard.example.com/" > xmlns:xsd="http://www.w3.org/2001/XMLSchema"> > <xsd:element name="getCritCardStatus" nillable="true" > type="tns:getCritCardStatus"/> > <xsd:element name="getCritCardStatusResponse" nillable="true" > type="tns:getCritCardStatusResponse"/> > </xsd:schema> > > While the good WSDL has this instead: > > <xsd:schema attributeFormDefault="unqualified" > elementFormDefault="unqualified" > targetNamespace="http://critcard.example.com/" > xmlns:ns0="http://www.example.org" xmlns:tns="http://critcard.example.com/" > xmlns:xsd="http://www.w3.org/2001/XMLSchema"> > <xsd:import namespace="http://www.example.org" /> > <xsd:element name="getCditCardStatus" type="tns:getCritCardStatus" /> > <xsd:complexType name="getCritCardStatus"> > <xsd:sequence> > <xsd:element minOccurs="0" ref="ns0:CditCardRequest" /> > </xsd:sequence> > </xsd:complexType> > <xsd:element name="getCritCardStatusResponse" > type="tns:getCditCardStatusResponse" /> > <xsd:complexType name="getCditCardStatusResponse"> > <xsd:sequence> > <xsd:element minOccurs="0" ref="ns0:CritCardResponse" /> > </xsd:sequence> > </xsd:complexType> > </xsd:schema> > > i.e., you're missing a couple of complexType definitions. I don't know > why--I guess it's something about the dependencies that ASM itself brings > in. This is probably a rare bug, possibly due to the manner in which you're > generating your project. > > Possible solutions: > 1.) Include the working (good) WSDL in your web service (If helpful, see > here[1] for where to include it in a Mavenized project, and [2] for how to > host it on Jetty) so you know the version that Jetty is using. > > and > > 2.) Don't use the maven-jaxb-plugin. CXF's own codegen plugin [1] will > generate all the necessary artifacts both JAX-WS and JAXB (you're only going > to get the latter with the jaxb plugin), and it can also handle any JAXB > customizations you may wish to do[3]. If you like to split out your JAXB > objects you can use Maven's Assembly plugin[1] for that. That might also > allow you to get rid of the java.net repository from your POM files, and > hence any download inconsistencies between that and the standard Maven > repos. > > [1] http://www.jroller.com/gmazza/entry/web_service_tutorial#WFstep4 (also > the cxf-servlet.xml file in Step #7) > [2] http://www.jroller.com/gmazza/entry/writing_junit_test_cases_for#testjt > [3] http://www.jroller.com/gmazza/entry/customizing_jaxb_artifacts > > HTH, > Glen > -- > View this message in context: > http://cxf.547215.n5.nabble.com/Invalid-WSDL-with-a-Jax-ws-schemaLocation-XSD-specified-tp1046395p1046509.html > Sent from the cxf-user mailing list archive at Nabble.com. >
