Estou usando o CXF para criar web services. E o Hibernate Annotations para fazer a persistência no banco de dados.
Quando eu tenho um relacionamento entre tabelas acontece um problema, na hora de responder a requisição:
[com.sun.istack.SAXException2: A cycle is detected in the object graph. This will cause infinitely deep XML:
O CXF fica acessando os métodos do POJO sendo que sempre vai ter um objeto que referencia um ao outro, ou seja, entra em loop infinito, por isso o erro.
Como posso resolver isso?
Poste o código para que alguém entenda o que vc esta fazendo.
Eu acho que o código não vai importar muito, porque o problema é na hora que o CXF gera o wsdl.
Por exemplo, tenho um objeto A que se relaciona com o objeto B, dentro de A eu tenho um list de B e dentro de B eu tenho um único objeto de A.
A tem muitos B e B tem um A.
Na hora que o CXF vai acessar o objeto A ele pega as lista de Bs, sendo que quando ele acessa os Bs tem uma instância de A e asssim vai sem parar…
Service:
public List<App> getIncentives() {
GenericDAO<App, Long> dao = null;
List<App> listApps = null;
try {
dao = new GenericDAO<App, Long>(HibernateUtils.getSessionFactory().openSession(), App.class);
listApps = dao.selectAll();
} catch(Exception e) {
LOGGER.error(e);
} finally {
if(dao != null) {
dao.close();
}
dao = null;
}
return listApps ;
}
Acho que a solução seria colocar os objetos da sessão do hibernate destacados. Como posso fazer isso?