Java 使用jaxb、jax-rs和ejb'找到正确的体系结构;s

Java 使用jaxb、jax-rs和ejb'找到正确的体系结构;s,java,jakarta-ee,jpa,jaxb,jax-rs,Java,Jakarta Ee,Jpa,Jaxb,Jax Rs,我的应用程序包括三层: 交互层(RestServices JAX-RS) 业务层(无状态EJB) 持久层(带有查询等的DAO) 此外,我还有一个域对象层,它贯穿各个层。该应用程序最初设置为使用nosql数据库,但我们不得不放弃它。现在,我们将JPA与RDBMS一起使用,但在迁移时遇到了麻烦,主要原因是交互层正在使用的jaxb对象试图在序列化对象时在没有事务的情况下延迟加载域对象。此事务从无状态ejb返回后已关闭 在网上读了很多之后,我也尝试用@Stateless注释我的restservice

我的应用程序包括三层:

  • 交互层(RestServices JAX-RS)
  • 业务层(无状态EJB)
  • 持久层(带有查询等的DAO)
此外,我还有一个域对象层,它贯穿各个层。该应用程序最初设置为使用nosql数据库,但我们不得不放弃它。现在,我们将JPA与RDBMS一起使用,但在迁移时遇到了麻烦,主要原因是交互层正在使用的jaxb对象试图在序列化对象时在没有事务的情况下延迟加载域对象。此事务从无状态ejb返回后已关闭

在网上读了很多之后,我也尝试用@Stateless注释我的restservice,以便更快地启动事务,并避免在离开业务层后关闭事务。不幸的是,这也不起作用,因为我仍然得到懒惰的初始化异常

所以我的问题是,我应该如何结合JAXB、JAX-RS和EJB来避免LIException

问候


Michael

为了避免延迟初始化异常,最简单的方法是创建实体的DTO,该DTO将包含所需的值,并将它们传递给交互层。
这样,将不会引发初始化异常,并且数据模型将包含您想要的所有信息。

很抱歉回答得很简短。看看这些是否有帮助嗨,尼古拉斯,这不是我想要的。这似乎是一种黑客行为。您可以通过以下方式将ejb注入rest服务:
@ejb private YourService。我不确定我是否正确理解了你的问题。