使用 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 映射到 JSON

JAXB“在这个上下文中也不知道它的任何超类”避免@XmlSeeAlso

根据 JAX-RS 中的规范使用带有 @PathParam 的 PathSegment?

会话上下文中的 ejb 始终为空

使用 Apache CXF 和 OAuth 2.0 保护 JAX-RS

如何正确中断 JAX-RS AJAX 请求