Anne, Sorry that was just my error. I cannot release the real WSDL I am having a problem with due to business confidentiality concerns. So I tried to whip one up by hand that was similar to the one I was having problems with. The one I'm having problems with didn't re-use the same entity name in the same namespace.
Davanum updated my JIRA stating that he fixed the bug. Here is another WSDL that doesn't have the problem with the WSDL that you noted that will cause WSDL2JAVA to throw an exception. <?xml version="1.0" encoding="UTF-8" standalone="no" ?> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="testService" targetNamespace="http://www.sears.com/tests" xmlns:fjs="http://www.sears.com/tests" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <wsdl:types> <xsd:schema elementFormDefault="qualified" targetNamespace="http://www.sears.com/tests" xmlns:s1="http://www.sears.com/tests"> <xsd:element name="addressBookKey"> <xsd:complexType> <xsd:sequence> <xsd:element name="firstName" nillable="true"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="lastName" nillable="true"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="20" /> </xsd:restriction> </xsd:simpleType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="addressBookEntry"> <xsd:complexType> <xsd:sequence> <xsd:element name="street" nillable="true"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="20" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="city" nillable="true"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="15" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="state" nillable="true"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="2" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="zipcode" nillable="true"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="9" /> </xsd:restriction> </xsd:simpleType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <wsdl:message name="addressBookLookupIn"> <wsdl:part element="fjs:addressBookKey" name="parameters" /> </wsdl:message> <wsdl:message name="addressBookLookupOut"> <wsdl:part element="fjs:addressBookEntry" name="parameters" /> </wsdl:message> <wsdl:portType name="testServicePortType"> <wsdl:operation name="addressBookLookup"> <wsdl:input message="fjs:addressBookLookupIn" name="addressBookKey" /> <wsdl:output message="fjs:addressBookLookupOut" name="addressBookEntry" /> </wsdl:operation> </wsdl:portType> <wsdl:binding name="testServiceBinding" type="fjs:testServicePortType"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="addressBookLookup"> <soap:operation soapAction="" style="document" /> <wsdl:input name="addressBookKey"> <soap:body use="literal" /> </wsdl:input> <wsdl:output name="addressBookEntry"> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="testService"> <wsdl:port binding="fjs:testServiceBinding" name="testServicePortType"> <soap:address location="http://localhost/testService" /> </wsdl:port> </wsdl:service> </wsdl:definitions> -----Original Message----- From: Anne Thomas Manes [mailto:[EMAIL PROTECTED] Sent: Friday, December 01, 2006 11:54 AM To: [email protected] Subject: Re: [AXIS 2] Big Bugs and new releases Todd, I don't think this is a bug in Axis2. Your schema is not valid. Your error is not a function of anonymous simple types. The error is that you are defining the "firstName" and "lastName" elements more than once in the same namespace. (first within the "Person" complexType, and second within the "AddressBookEntry". If you want to define these elements with the same name, but you want to define them as having different types, then you have the following options: - specify elementFormDefault="unqualified" in the <xsd:schema> declaration - specify form="unqualified" in the "firstName" and "lastName" element declarations - define the "Person" and "AddressBookEntry" complexTypes in separate namespaces If these elements should be of the same type, then you should define "firstName" and "lastName" as global elements and reference them from the type definitions You may not like to hear this, but your current practice of generating schema from code is not a good one. You should expect to encounter these types of issues on a regular basis if you continue with this practice. Anne On 11/28/06, Doolittle, Todd <[EMAIL PROTECTED]> wrote: > > > > I just found a very major bug in Axis 2 that I'm going to file a JIRA for.. > My company is not willing to use nightlies or non-released versions of > software. Yet this bug is big enough that we will probably not be able to > use Axis 2. Is it going to be another 6 months before the next release or > is there some plan to do "point" releases more often? > > In case anyone is interested here is the bug... > > Here is a snippet of a schema that returns an object that contains a first > name and last name. The problem is that WSDL2JAVA fails when there is more > than 1 anonymous simple type. If the schema defined in the WSDL includes 1 > anonymous simple type, everything works fine (like this)... > > <xsd:element name="firstName"> > > <xsd:simpleType> > > <xsd:restriction base="xsd:string"> > > <xsd:maxLength value="10" /> > > </xsd:restriction> > > </xsd:simpleType> > > </xsd:element> > > <xsd:element name="lastName" type="xsd:string" /> > > > As soon as you add more than one anonymous simple type (like below) > WSDL2JAVA throws an exception. > > <xsd:element name="firstName"> > > <xsd:simpleType> > > <xsd:restriction base="xsd:string"> > > <xsd:maxLength value="10" /> > > </xsd:restriction> > > </xsd:simpleType> > > </xsd:element> > > <xsd:element name="lastName"> > > <xsd:simpleType> > > <xsd:restriction base="xsd:string"> > > <xsd:maxLength value="20" /> > > </xsd:restriction> > > </xsd:simpleType> > > </xsd:element> > > The exception is listed at the bottom of this email. We can work around > this problem by pulling out all the anonymous simple types and creating > named types. However we are not the ones generating the service code and > WSDL. It is being generated by another language and it uses these anonymous > simple (and complex) types extensively. So we would have to do this for > some very complex WSDL across a lot of services and hundreds of operations. > And each time a service or operation was changed we have to do it by hand > all over again which would be very tedious and error prone. > > Exception in thread "main" > org.apache.axis2.wsdl.codegen.CodeGenerationException > > : java.lang.RuntimeException: > java.lang.reflect.InvocationTargetException > > at > org.apache.axis2.wsdl.codegen.CodeGenerationEngine.generate(CodeGener > > ationEngine.java:224) > > at > org.apache.axis2.wsdl.WSDL2Code.main(WSDL2Code.java:32) > > at > org.apache.axis2.wsdl.WSDL2Java.main(WSDL2Java.java:21) > > Caused by: java.lang.RuntimeException: > java.lang.reflect.InvocationTargetExcepti > > on > > at > org.apache.axis2.wsdl.codegen.extension.SimpleDBExtension.engage(Simp > > leDBExtension.java:52) > > at > org.apache.axis2.wsdl.codegen.CodeGenerationEngine.generate(CodeGener > > ationEngine.java:177) > > ... 2 more > > Caused by: java.lang.reflect.InvocationTargetException > > at > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. > > java:39) > > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces > > sorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:324) > > at > org.apache.axis2.wsdl.codegen.extension.SimpleDBExtension.engage(Simp > > leDBExtension.java:49) > > ... 3 more > > Caused by: > org.apache.axis2.schema.SchemaCompilationException: > java.lang.NullPoi > > nterException > > at > org.apache.axis2.schema.SchemaCompiler.compile(SchemaCompiler.java:25 > > 7) > > at > org.apache.axis2.schema.ExtensionUtility.invoke(ExtensionUtility.java > > :72) > > ... 8 more > > Caused by: java.lang.NullPointerException > > at > org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler. > > java:592) > > at > org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler. > > java:489) > > at > org.apache.axis2.schema.SchemaCompiler.process(SchemaCompiler.java:14 > > 88) > > at > org.apache.axis2.schema.SchemaCompiler.processParticle(SchemaCompiler > > .java:1450) > > at > org.apache.axis2.schema.SchemaCompiler.processComplexType(SchemaCompi > > ler.java:950) > > at > org.apache.axis2.schema.SchemaCompiler.processNamedComplexSchemaType( > > SchemaCompiler.java:909) > > at > org.apache.axis2.schema.SchemaCompiler.processSchema(SchemaCompiler.j > > ava:864) > > at > org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler. > > java:527) > > at > org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler. > > java:499) > > at > org.apache.axis2.schema.SchemaCompiler.compile(SchemaCompiler.java:33 > > 6) > > at > org.apache.axis2.schema.SchemaCompiler.compile(SchemaCompiler.java:24 > > 8) > > ... 9 more > > Full WSDL > > <?xml version="1.0" encoding="UTF-8" standalone="no" ?> > > <wsdl:definitions > xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" > > name="AddressBook" targetNamespace="http://sears.org/" > > xmlns:sears="http://sears.org/" > > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" > > xmlns:xsd="http://www.w3.org/2001/XMLSchema"> > > <wsdl:types> > > <xsd:schema elementFormDefault="qualified" > > targetNamespace="http://sears.org/" xmlns:s1="http://sears.org/"> > > <xsd:complexType name="Person"> > > <xsd:sequence> > > <xsd:element name="firstName" type="xsd:string" /> > > <xsd:element name="lastName" type="xsd:string" /> > > </xsd:sequence> > > </xsd:complexType> > > <xsd:complexType name="AddressBookEntry"> > > <xsd:sequence> > > <xsd:element name="firstName"> > > <xsd:simpleType> > > <xsd:restriction base="xsd:string"> > > <xsd:maxLength value="10" /> > > </xsd:restriction> > > </xsd:simpleType> > > </xsd:element> > > <xsd:element name="lastName"> > > <xsd:simpleType> > > <xsd:restriction base="xsd:string"> > > <xsd:maxLength value="20" /> > > </xsd:restriction> > > </xsd:simpleType> > > </xsd:element> > > <xsd:element name="streetAddress" type="xsd:string" /> > > <xsd:element name="city" type="xsd:string" /> > > <xsd:element name="state" type="xsd:string" /> > > <xsd:element name="zipCode" type="xsd:int" /> > > <xsd:element name="phoneNumber" type="xsd:string" /> > > </xsd:sequence> > > </xsd:complexType> > > <xsd:element name="addressLookupRequest" type="Person" /> > > <xsd:element name="addressLookupResponse" > > type="AddressBookEntry" /> > > </xsd:schema> > > </wsdl:types> > > <wsdl:message name="AddressLookupIn"> > > <wsdl:part element="sears:addressLookupRequest" > > name="parameters" /> > > </wsdl:message> > > <wsdl:message name="AddressLookupOut"> > > <wsdl:part element="sears:addressLookupResponse" > > name="parameters" /> > > </wsdl:message> > > <wsdl:portType name="AddressBookPortType"> > > <wsdl:operation name="AddressLookup"> > > <wsdl:input message="sears:AddressLookupIn" > > name="addressLookupRequest" /> > > <wsdl:output message="sears:AddressLookupOut" > > name="addressLookupResponse" /> > > </wsdl:operation> > > </wsdl:portType> > > <wsdl:binding name="AddressBookBinding" > > type="sears:AddressBookPortType"> > > <soap:binding > transport="http://schemas.xmlsoap.org/soap/http" /> > > <wsdl:operation name="AddressLookup"> > > <soap:operation soapAction="AddressLookup" style="document" /> > > <wsdl:input name="addressLookupRequest"> > > <soap:body use="literal" /> > > </wsdl:input> > > <wsdl:output name="addressLookupResponse"> > > <soap:body use="literal" /> > > </wsdl:output> > > </wsdl:operation> > > </wsdl:binding> > > <wsdl:service name="AddressBook"> > > <wsdl:port binding="sears:AddressBookBinding" > > name="AddressBookPortType"> > > <soap:address > > > location="http://localhost:8080/axis2/services/AddressBook" > /> > > </wsdl:port> > > </wsdl:service> > > </wsdl:definitions> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
