使用 jaxb、jax-rs 和 ejb 找到正确的架构
Posted
技术标签:
【中文标题】使用 jaxb、jax-rs 和 ejb 找到正确的架构【英文标题】:finding the correct architecture using jaxb, jax-rs and ejb's 【发布时间】:2014-10-01 14:47:09 【问题描述】:我的应用程序包含三层:
交互层(RestServices JAX-RS) 业务层(无状态 EJB) 持久层(带有查询等的 DAO)此外,我还有这个贯穿各个层的域对象层。该应用程序最初设置为使用 nosql 数据库,但我们不得不放弃它。现在我们将 JPA 与 RDBMS 一起使用,但在迁移时遇到了麻烦,主要是因为交互层正在使用的 jaxb 对象在序列化时试图在没有事务的情况下延迟加载域对象。此事务从无状态 ejb 返回后即已关闭。
在网上阅读了很多内容后,我也尝试使用@Stateless 注释我的restservice,以便更快地启动事务并避免在离开业务层后关闭事务。不幸的是,这也不起作用,因为我仍然得到 lazilyinitializationexceptions。
所以我的问题是我应该如何结合 JAXB、JAX-RS 和 EJB 以避免 LIException?
问候
迈克尔
【问题讨论】:
对不起,简短的回答。看看这是否有帮助How to solve lazy initialization exception using JPA and Hibernate as provider 嗨 Nicholas,这不是我真正想要的。这似乎是一种黑客行为。 您可以通过这种方式将您的 ejb 注入到休息服务中:@EJB private YourService service;
。不确定我是否正确理解了您的问题。
【参考方案1】:
为了避免延迟初始化异常,最简单的方法是创建包含所需值的实体的 DTO,并将它们传递给交互层。 这样就不会抛出初始化异常,数据模型也将包含您想要的所有信息。
【讨论】:
以上是关于使用 jaxb、jax-rs 和 ejb 找到正确的架构的主要内容,如果未能解决你的问题,请参考以下文章
JAXB“在这个上下文中也不知道它的任何超类”避免@XmlSeeAlso
根据 JAX-RS 中的规范使用带有 @PathParam 的 PathSegment?