When I do this:

  @GET
  @Path("/jobs.xml")
  @Produces(MediaType.APPLICATION_XML)
  public Response getJobs() {
    return Response.ok(getJobsImpls()).build();
  }

@XmlType(name = "job", namespace = "http://remote.opencastproject.org/";)
@XmlRootElement(name = "job", namespace = "
http://remote.opencastproject.org/";)
public class JobImpl implements Job {
   ...
}


I get a 500 response with this in the body "No message body writer has been
found for response class Vector."  I thought maybe the problem was that this
Vector is the one being returned by eclipselink, and there was some kind of
proxy voodoo interfering.  If I copy all of the JobImpls into a new
ArrayList, I get the same kind of message, "No message body writer has been
found for response class ArrayList."

I'm building the JAX-RS endpoint manually using cxf-bundle-jaxrs-2.2.9.jar
and a CXFNonSpringServlet with some custom providers.  Perhaps I'm missing
one of the providers needed to handle Collections?

And I'm curious, what would the xml look like for this collection?  Where
does the root element name come from?  And the namespace... is it copied
from the objects in the collection?

Thanks,
Josh

On Tue, Oct 5, 2010 at 11:20 PM, Sergey Beryozkin <[email protected]>wrote:

> Hi Josh
>
> thanks for this tip, but my question is to do with you referring to
> collections of JAXB beans not being supported.
> I'd appreciate if you could send me an example of such a collection.
> Explicit collection have been supported for a while and I recall users
> confirming that it worked for them, so if there's some issue there lurking
> then I'd like to get it fixed :-)
>
> thanks, Sergey
>
> On Tue, Oct 5, 2010 at 7:24 PM, Josh Holtzman <[email protected]
> >wrote:
>
> > This part of the stack trace:
> >
> > Caused by: javax.ws.rs.WebApplicationException at
> >
> >
> org.apache.cxf.jaxrs.client.AbstractClient.reportNoMessageHandler(AbstractClient.java:487)
> >
> > looks like there's no message body writer.  I've run into this kind of
> > problem when trying to return Collections, even collections of JAXB
> > elements, from JAX-RS endpoints.  I usually solve it by wrapping the list
> > in
> > a root class, and passing the wrapper rather than the Collection, like
> > this:
> >
> > @XmlRootElement(name="deviceList")
> > public class DeviceList {
> >  @XmlElement
> >  protected List<Device> devices;
> > }
> >
> > Perhaps this might help in your case too, switching from
> > addDevice(List<Device> device) to addDevice(DeviceList deviceList).
> >
> > Josh
> >
> > On Tue, Oct 5, 2010 at 8:00 PM, oceanz <[email protected]> wrote:
> >
> > >
> > > I changed it to:
> > >         @Path("user/site/plant/device/addDevice1")
> > >        @POST
> > >        @Produces("text/xml")
> > >         @Consumes("multipart/form-data;type=text/xml")
> > >        Device addDevice(List<Device> device);
> > >
> > > But it still doesn't work.
> > > Same exception:Caused by: javax.ws.rs.WebApplicationException
> > >         at
> > >
> > >
> >
> org.apache.cxf.jaxrs.client.AbstractClient.reportNoMessageHandler(AbstractClient.java:487)
> > >        at
> > >
> > >
> >
> org.apache.cxf.jaxrs.client.AbstractClient.writeBody(AbstractClient.java:401)
> > >        at
> > >
> > >
> >
> org.apache.cxf.jaxrs.client.ClientProxyImpl$BodyWriter.handleMessage(ClientProxyImpl.java:514)
> > >        ... 5 more
> > >
> > > Device is a JAXB Bean.:
> > > @Entity(name="device")
> > > @XmlRootElement(name="device")
> > > @XmlAccessorType(XmlAccessType.FIELD)
> > > public class Device extends DomainEntity {
> > >
> > >        /**
> > >         *
> > >         */
> > >        private static final long serialVersionUID = 1L;
> > >
> > >        public Device() {}
> > >
> > >
> > >        @XmlAttribute(name="deviceName")
> > >        private String deviceName;
> > >
> > >        @XmlAttribute(name="deviceType")
> > >        private String deviceType;
> > >
> > >        @XmlAttribute(name="modelNumber")
> > >        private String modelNumber;
> > >
> > >        @XmlAttribute(name="serialNumber")
> > >        private String serialNumber;
> > >        ..........
> > > }
> > >
> > > Who do I need to do next? Desparate to get this working.
> > > Thanks for all your help.
> > > --
> > > View this message in context:
> > >
> >
> http://cxf.547215.n5.nabble.com/Help-required-with-apache-cxf-multiparts-tp3199975p3200103.html
> > > Sent from the cxf-user mailing list archive at Nabble.com.
> > >
> >
>

Reply via email to