>>AFAIK, in case of JAXWS, additional JAXB elements/classes are generated. Correct, though in the "wrapped" mapping, I don't believe these classes are used. In any event, I want the REST interface to return the XML of the "Book" not the "getBookResponse".
Scott ----------------------------------------------- From: Sergey Beryozkin <[email protected]> Date: Wed, 5 Aug 2009 01:39:59 -0700 (PDT) To: <[email protected]> Subject: Re: @XmlRootElement with jax-rs/jax-ws Hi, AFAIK, in case of JAXWS, additional JAXB elements/classes are generated. For ex, if it's a method called 'getBook' returning Book then it will be a getBookResponse class that will be generated. I was also assuming that if ObjectFactory had methods returning JAXBElements then there'd be no need in updating the generated classes with @XmlRootElement which apparently is not the case. I don't think that in case of JAX-RS we can generate wrappers too. Dan - is there anything that can be done at a pure JAXB level for users to avoid explicitly adding XMLRootElement ? It appears there's no solution really... thanks, Sergey Scott Oster-2 wrote: > > I am trying to add jax-rs annotations to an existing service > implementation > generated by wsdltojava (wrapped style). The POJO returned by my > operation > is defined in a standalone XSD, and understandably doesn¹t have the > @XmlRootElement annotation (for the reasons described here > http://weblogs.java.net/blog/kohsuke/archive/2006/03/why_does_jaxb_p.html). > > My web service works fine, but my REST call dies with the error: > unable to marshal type "..." as an element because it is missing an > @XmlRootElement annotation > > If I add the @XmlRootElement annotation to the POJO, it works fine, but > from > the documentation it seems I shouldn¹t have to do this (and I don¹t want > to, > as it is generated code). > > In reading this bug: http://issues.apache.org/jira/browse/CXF-1650 > It appears this was an issue and should be ³fixed² in the version I am > using > (2.2 and trunk) but it¹s not clear if I am expected to configure > something. > > The documentation here: > http://cwiki.apache.org/CXF20DOC/jax-rs.html#JAX-RS-JAXBsupport states: > ³Alternatively to using @XmlRootElement and Collection wrappers, one can > provide an Object factory which will tell JAXB how to > marshal a given type (in case of Collections - its template type).² > > I have an ObjectFactory, generated by wsdl2java (and it looks correct), > but > I¹m not sure how I am supposed to ³provide² it other than have it on the > classpath (as I do). Could you expand upon what exactly one needs to do > to > get this to work? > > Thanks, > Scott
