é, não foi o que eu queria mas resolvi.
Seguinte:
1 - muda o processador de Json para o Jackson JSON, add as libs no classpath
2 - colocar ele no init do servlet no web.xml
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
3 - no seu servidor, anote seus pojos com o @JsonBackReference(“label”) e @JsonManagedReference(“label”) no item que retorna a referencia da classe e a lista, por exemplo:
@Entity
@Table(name="grupo")
public class Grupo implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="grupo_id", unique=true, nullable=false)
private int id;
// [...] outros atributos que vc tenha
@OneToMany(mappedBy="grupo", fetch=FetchType.LAZY, cascade=CascadeType.PERSIST)
private List<Usuarios> usuarios;
// gets e sets
/**
* @return the grupo
*/
@JsonManagedReference("grupo-usuario")
public List<Usuarios> getUsuarios() {
return usuarios;
}
}
e na classe que é referenciada:
@Entity
@Table(name="usuarios")
public class Usuarios implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="usuario_id", unique=true, nullable=false)
private int id;
// [...] outros atributos que vc tenha
@ManyToOne(fetch=FetchType.EAGER, cascade=CascadeType.PERSIST)
@JoinColumn(name="grupo_id", insertable=true, updatable=true, nullable=false)
private Grupo grupo;
// gets e sets
/**
* @return the grupo
*/
@JsonBackReference("grupo-usuario")
public Grupo getGrupo() {
return grupo;
}
}
Ai quando vc executar e chamar o resource que usa estes pojos, ele nao vai mais dar o erro de referencias no XML, entretanto! o metodo que esta com a anotacao @JsonBackReference() não retorna nada por que ele nao eh serializado…
Se vc precisa desta referencia e da referencia da lista ao mesmo tempo, desista… fique com a referencia da classe e esqueca a lista (fica mais facil pesquisar quem é daquele grupo por outra criteria em outro metodo e retornar so a lista)
Se vc tem que usar os mesmos pojos do server no cliente, precisara configurar o cliente para usar o Jackson JSON no momento de criar o cliente:
public static void setBaseURI(String uri) {
baseUri = uri;
ClientConfig config = new DefaultClientConfig();
config.getClasses().add(JacksonJsonProvider.class);
Client client = Client.create(config);
resource = client.resource(getBaseURI());
}
e colocar as anotacoes como feito no server, porem ao contrário… ou a referencia ao grupo no usuario (nesse exemplo) não seria gravada pois o @JsonBackReference nao serializa para JSON.
é isso! se tiver duvida, posta ai!