MessageBodyWriter específico para el campo

Supongamos que tengo una clase de datos en un entorno JAX-RS 1 (RestEasy 2 con el proveedor de Jackson) así:

class Foo {
   int id;
   String name;
   Bar bar;

   ...
}

conBar siendo:

class Bar {
   int one;
   String two;
}

Ahora quiero tenerBar serializado de una manera especial (quizás dependiendo del tipo de medio que se solicitó (o dependiendo de la fase de la luna), escribiría unMessageBodyWriter<Bar>

@Provider
@Produces("application/json")
public class BarWriter implements MessageBodyWriter<Bar> {
   ...
}

que funciona muy bien siBar Se solicita por su cuenta como en

@GET @Path("bar")  
public Bar getBar() { return new Bar(...); }

Pero cuando pidoFoo como en

@GET @Path("foo")  
public Foo getFoo() { return new Foo(...); }

el escritor del cuerpo del mensaje se ignora.

Ahora lo que quiero es que esteMessageBodyWriter También se usa cuando regreso.Foo o unList<Bar>

Creo que esto último se puede lograr simplemente escribiendo una costumbreMessageBodyWriter Para elList caso, pero para el caso anterior no puedo escribir un escritor del cuerpo del mensaje para todas mis clases de aplicación que contienen unBar campo.

¿Alguna idea sobre cómo resolver esto? También estaba tratando de usar un serializador Jackson en elBar ejemplo, pero parece que esto ni siquiera está registrado por RestEasy (y luego, creo que esa forma es demasiado frágil de todos modos).

Respuestas a la pregunta(3)

Su respuesta a la pregunta