Hi Jim,
Thank you for your reply.
Item and OrderBy are generated by JAXB from a schema.xsd file.
I have followed your advice to see if it behaves any different but I still
get the same error.
The Item and therefore OrderBy classes belong to a different JAXB context:
com.aaa.bbb.zzz.jaxb, but not sure if/how to indicate this?
Thanks for your help,
Monica
From: Jim Ma <[EMAIL PROTECTED]>
To: [email protected]
Date: 07/01/2008 02:22
Subject: Re: WSDLToJava Error : Thrown by JAXB : undefined element
declaration 'ns1:orderBy'
Hi ,
From the error message , I think this is caused by the inner class
OrderBy is not loaded into
JAXB context . Can you modify this class as a outer class and try it
again ?
I will look it further to see if the JAXB can not load the inner static
class .
Thanks
Jim
Monica Ferrero wrote:
> Hi!
>
> I'm getting this error:
>
> WSDLToJava Error : Thrown by JAXB : undefined element declaration
> 'ns1:orderBy'
>
> when trying to generate java stubs from the wsdl.
>
>
> This is my original service:
>
> @WebService(endpointInterface = "com.aaa.bbb.ccc.MyService")
> public interface MyService {
>
> [...]
>
> @WebResult(name="MyList")
> @WebMethod
> MyList getItems( @WebParam(name="listId") int listId);
>
> [...]
> }
>
>
> the MyList class:
>
> @XmlAccessorType(XmlAccessType.FIELD)
> @XmlType(name = "", propOrder = {"items"})
> @XmlRootElement(name = "myList")
> public class MyList {
>
> @XmlElement(required = true)
> private List<Item> items;
>
> public List<Item> getItems() {
> if (items == null) {
> items = new ArrayList<Item>();
> }
> return items;
> }
>
> public void setItems(List<Item> items) {
> this.items = items;
> }
> }
>
>
> The Item is a JAXB generated file from a schema:
>
>
> @XmlAccessorType(XmlAccessType.FIELD)
> @XmlType(name = "", propOrder = {
> "attributesPD",
> "orderBy"
> })
> @XmlRootElement(name = "item")
> public class Item {
>
> @XmlElement(name = "attributes", required = true)
> protected AttributesPD attributesPD;
> protected Item.OrderBy orderBy;
> @XmlAttribute
> @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
> @XmlSchemaType(name = "token")
> protected String id;
> @XmlAttribute
> @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
> @XmlSchemaType(name = "token")
> protected String createdBy;
> @XmlAttribute
> @XmlSchemaType(name = "date")
> protected XMLGregorianCalendar creationDate;
>
> public AttributesPD getAttributesPD() {
> return attributesPD;
> }
>
> public void setAttributesPD(AttributesPD value) {
> this.attributesPD = value;
> }
>
> public Item.OrderBy getOrderBy() {
> return orderBy;
> }
>
> public void setOrderBy(Item.OrderBy value) {
> this.orderBy = value;
> }
>
> public String getId() {
> return id;
> }
>
> public void setId(String value) {
> this.id = value;
> }
>
> public String getCreatedBy() {
> return createdBy;
> }
>
> public void setCreatedBy(String value) {
> this.createdBy = value;
> }
>
> public XMLGregorianCalendar getCreationDate() {
> return creationDate;
> }
>
> public void setCreationDate(XMLGregorianCalendar value) {
> this.creationDate = value;
> }
>
>
> @XmlAccessorType(XmlAccessType.FIELD)
> @XmlType(name = "", propOrder = {
> "orderedAttributeRef"
> })
> public static class OrderBy {
>
> @XmlElement(required = true)
> protected List<OrderedAttributeRefType> orderedAttributeRef;
>
> public List<OrderedAttributeRefType> getOrderedAttributeRef() {
> if (orderedAttributeRef == null) {
> orderedAttributeRef = new
> ArrayList<OrderedAttributeRefType>();
> }
> return this.orderedAttributeRef;
> }
> }
> }
>
>
>
> The wsdl generated by cxf:
>
> <?xml version="1.0" encoding="utf-8"?>
> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:tns="http://myservice.bbb.aaa.com/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="MyServiceImplService"
> targetNamespace="http://myservice.bbb.aaa.com/">
> <wsdl:types>
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
> xmlns:tns="http://www.aaa.com/AaaOtherService"
> attributeFormDefault="unqualified" elementFormDefault="qualified"
> targetNamespace="http://www.aaa.com/AaaOtherService">
> [...]
> <xs:element name="item">
> <xs:complexType>
> <xs:sequence>
> <xs:element ref="tns:attributes"/>
> <xs:element minOccurs="0"
> name="orderBy">
> <xs:complexType>
> <xs:sequence>
> <xs:element
> maxOccurs="unbounded" name="orderedAttributeRef"
> type="tns:orderedAttributeRefType"/>
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> </xs:sequence>
> <xs:attribute name="id" type="xs:token"/>
> <xs:attribute name="createdBy"
> type="xs:token"/>
> <xs:attribute name="creationDate"
> type="xs:date"/>
> </xs:complexType>
> </xs:element>
> [...]
> </xs:schema>
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
> xmlns="http://myservice.bbb.aaa.com/"
> xmlns:ns1="http://www.aaa.com/AaaOtherService"
> attributeFormDefault="unqualified" elementFormDefault="unqualified"
> targetNamespace="http://myservice.bbb.aaa.com/">
> <xs:import
> namespace="http://www.aaa.com/AaaOtherService"/>
> <xs:element name="myList">
> <xs:complexType>
> <xs:sequence>
> <xs:element maxOccurs="unbounded"
> name="items">
> <xs:complexType>
> <xs:sequence>
> <xs:element
> ref="ns1:attributes"/>
> <xs:element
> minOccurs="0" ref="ns1:orderBy"/>
> </xs:sequence>
> <xs:attribute name="id"
> type="xs:token"/>
> <xs:attribute
> name="createdBy" type="xs:token"/>
> <xs:attribute
> name="creationDate" type="xs:date"/>
> </xs:complexType>
> </xs:element>
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> [...]
> <xs:element name="getItemsResponse"
> type="getItemsResponse"/>
> <xs:complexType name="getItemsResponse">
> <xs:sequence>
> <xs:element minOccurs="0" ref="myList"/>
> </xs:sequence>
> </xs:complexType>
> [...]
> </xs:schema>
> </wsdl:types>
> [...]
> </wsdl:definitions>
>
>
>
> I think it's a bit weird that it defines myList as a sequence of the
> elements that form an Item, instead of a sequence of items.
> Anyway I'm not sure why it does not work if it is mostly all generated
> code.
> Any ideas?
>
> Help or pointers very much appreciated!
>
>
> Monica