私はJavaEE6で最初のRestFul WebServicesを開発しています。これは私のエンティティ Bean です
@XmlRootElement
@Entity
public class MyEntity implements Serializable {
@Id
@GeneratedValue
private long idEntity;
private String name;
private String description;
@OneToMany(mappedBy = "entity" , fetch = FetchType.EAGER)
private List<EntityB> list;
//Get and set
}
@Entity
public class EntityB {
@Id
@GeneratedValue
private long idCategoria;
@ManyToOne
private MyEntity myEntity;
}
これは私のウェブサービスです
@Path("myentity")
@Produces( {MediaType.APPLICATION_XML , MediaType.APPLICATION_JSON })
@Consumes( {MediaType.APPLICATION_XML , MediaType.APPLICATION_JSON })
@Stateless
public class MyEntityService {
@Inject
MyEntityDao entityDao;
@GET
@Path("{id}/")
public MyEntity findById(@PathParam("id") Long id){
return entityDao.findById(id);
}
}
最後に、ジャージーを構成しました
@ApplicationPath("ws")
public class ApplicationConfig extends Application {
}
ここで、Web サービス (localhost:8080/xxxx/ws/myentity) を呼び出そうとすると、次のエラーが発生します。
HTTP ステータス 500 - javax.xml.bind.MarshalException - リンクされた例外: [com.sun.istack.SAXException2: オブジェクト グラフでサイクルが検出されました。これにより、無限に深い XML が発生します。