Hi Jim,
Changed the logging level to FINE as you indicated and run the wsdl to java
on my wsdl, but there is no such a message in there as "Classes known to
this context:". I've search for "classes" and " context" as well and there
is nothing on those lines.
There are some exceptions that I'm not sure there are relevant. I add here
the last one before the error.
Thanks for your help,
Monica
[exec] 08-Jan-2008 10:19:57
com.sun.xml.bind.v2.runtime.reflect.opt.OptimizedAccessorFactory get
[exec] FINE: Using optimized Accessor for
com.sun.tools.xjc.reader.xmlschema.bindinfo.BIGlobalBinding$UnderscoreBinding
com.sun.tools.xjc.re
ader.xmlschema.bindinfo.BIGlobalBinding.getUnderscoreBinding() and void
com.sun.tools.xjc.reader.xmlschema.bindinfo.BIGlobalBinding.setUnderscore
Binding(com.sun.tools.xjc.reader.xmlschema.bindinfo.BIGlobalBinding$UnderscoreBinding)
[exec] 08-Jan-2008 10:19:57
com.sun.xml.bind.v2.runtime.reflect.opt.Injector inject
[exec] FINE: Unable to inject
com/sun/tools/xjc/reader/xmlschema/bindinfo/CollectionTypeAttribute$JaxbAccessorF_collectionType
[exec] java.lang.reflect.InvocationTargetException
[exec] at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown
Source)
[exec] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[exec] at java.lang.reflect.Method.invoke(Method.java:597)
[exec] at
com.sun.xml.bind.v2.runtime.reflect.opt.Injector.inject(Injector.java:125)
[...]
[exec] at
org.apache.cxf.tools.wsdlto.WSDLToJava.main(WSDLToJava.java:171)
[exec] Caused by: java.lang.LinkageError: loader (instance of
sun/misc/Launcher$AppClassLoader): attempted duplicate class definition
for
name:
"com/sun/tools/xjc/reader/xmlschema/bindinfo/CollectionTypeAttribute$JaxbAccessorF_collectionType"
[exec] at java.lang.ClassLoader.defineClass1(Native Method)
[exec] at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
[exec] at java.lang.ClassLoader.defineClass(ClassLoader.java:465)
[exec] ... 84 more
From: Jim Ma <[EMAIL PROTECTED]>
To: [email protected]
Date: 08/01/2008 02:56
Subject: Re: WSDLToJava Error : Thrown by JAXB : undefined element
declaration 'ns1:orderBy'
Hi Monica,
You can change the log level to FINE (modify the log configuration file
under ${CXF_HOME}/etc/logging.properties)
to see if the OrderBy classes added to JAXB Context when you run
java2wsdl tool .
Search "Classes known to this context:" in the log file to see if this
class is known to JAXB.
Regards
Jim
Monica Ferrero wrote:
>
> 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
>
> Inactive hide details for Jim Ma ---07/01/2008 02:22:26---Hi ,Jim Ma
> ---07/01/2008 02:22:26---Hi ,
>
>
> 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