JAX资源(带有@Path注释的类)具有每个请求的默认生命周期。
现在EJB也有了自己的生命周期,我的意思是当引用EJB时,这个引用实际上是管理EJB池的代理对象的引用。
当EJB也是JAX资源时,这些生命周期模型如何共存?
https://jersey.java.net/documentation/latest/jaxrs-resources.html
默认情况下,JAX-RS资源是在每个请求范围内管理的,这意味着为每个请求创建新的资源。
来源:https://jersey.java.net/documentation/latest/jaxrs-resources.html
发布于 2016-11-10 20:57:50
JAX使用企业JavaBeans技术(企业bean)和上下文以及Java (CDI)的依赖注入。 通常,为了使JAX使用企业bean,需要用@Path对bean类进行注释,以将其转换为根资源类。您可以将@Path注释与无状态会话bean和单例POJO bean一起使用。 JAX和CDI的组件模型略有不同。默认情况下,JAX根资源类是在请求范围中管理的,指定范围不需要任何注释。带有@RequestScoped或@ApplicationScoped注释的CDI托管bean可以转换为JAX资源类。
为了让web应用程序使用注入另一个bean类的bean,bean需要能够在用户与应用程序的交互过程中保持状态。定义此状态的方法是给bean一个作用域。
在回答您的问题时,就像您可以在另一个内部执行上下文和依赖项注入一样,每个bean将独立地管理自己的状态。根据您要执行的角色,您必须为其定义范围。
https://docs.oracle.com/javaee/7/tutorial/jaxrs-advanced004.htm https://docs.oracle.com/javaee/7/tutorial/cdi-basic008.htm#GJBBK
发布于 2016-11-11 06:45:55
EJB提供的是每个客户端请求和事务的一个专用线程。例如,您可以认为每个无状态bean都是一个线程实例,该实例实例化了等待服务请求的(注入)数据。当创建bean时,注入发生,并且在每个方法调用之后(在您的情况下是REST)将返回到池中进行重用或销毁。因此,REST“每个请求的默认生命周期”与SLSB生命周期之间是匹配的。
https://stackoverflow.com/questions/40530395
复制相似问题