Marshal / Un marshal Listar objetos en Jersey JAX-RS usando JAXB

Buenos días. Hoy por la mañana cuando estoy visitando proveedores de Jersey EntityMessageBodyReaders yMessageBodyWriters Me encontré con el siguiente problema.

,

Quiero escribir un método de recurso y un cliente que devuelva una lista de objetos personalizados y el tipo de medio esapplication/xml. Entonces me gustaría usar JAXB (soy nuevo en JAXB). Pude lograr esto escribiendo mi propio extendidoMessageBodyReader yMessageBodyWriter. Pero tengo miedo de la forma en que estoy siguiendo. Solo mira la forma en que implementé:

Método de recursos:

@Path("productlist/xml")
@GET
public RetObjects getProductsXml(){
    List<Product> pList = new ArrayList<Product>();
    pList.add(new Product("1","Dell latitude E6000",2900,500));
    pList.add(new Product("2","Xperia Z2",549,400));
    RetObjects obj = new RetObjects();
    obj.setObject(pList);
    return obj;
}

Mis objetos personalizados:

@Entity
@Table (name="PRODUCT")
@XmlRootElement(name="product")
public class Product {

    @Id
    @Column(name = "CODE")
    private String code;
    ...
    // rest of the fields, constructors, getters and setters
 }

Objeto que envuelve mi lista de objetos personalizados:

 @XmlRootElement(name = "products")
 @XmlAccessorType (XmlAccessType.FIELD)
 public class RetObjects {

     @XmlElement(name = "product")
     private List<Product> object = null;

     public List<Product> getObject() {
         return object;
     }

     public void setObject(List<Product> object) {
         this.object = object;
     }
 }

MessageBodyReader/Writer son simples simplemente usando Jaxb unmarshaller y marshaller sobre elRetObjects objeto.

Con esta implementación, funciona bien como se esperaba y puedo obtener elRetObjects envolviendo la lista de Productos perfectamente bien en el cliente.

Aquí mi pregunta es, en lugar de envolver mi Lista de productos en un objeto intermedio,RetObjects en mi caso, ¿no podría ordenar y deshacer la lista de productos directamente? Si quiero escribir otro servicio que devuelva la Lista de pedidos, necesito ajustar esto con un objeto intermedio más. ¿Cuál es el enfoque correcto para lograr esto? ¿Cómo podría hacer esto sin objetos intermedios?

Respuestas a la pregunta(1)

Su respuesta a la pregunta