- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
JAX-RS 资源(用 @Path 注释的类)具有每个请求的默认生命周期。
现在EJB也有自己的生命周期,我的意思是当有一个EJB的引用时,这个引用实际上是管理EJB池的代理对象的引用。
当 EJB 也是 JAX-RS 资源时,这些生命周期模型如何共存?
https://jersey.java.net/documentation/latest/jaxrs-resources.html
JAX-RS resources are managed in per-request scope by default which means that new resource is created for each request.
来源: https://jersey.java.net/documentation/latest/jaxrs-resources.html
最佳答案
JAX-RS works with Enterprise JavaBeans technology (enterprise beans) and Contexts and Dependency Injection for Java EE (CDI).
In general, for JAX-RS to work with enterprise beans, you need to annotate the class of a bean with @Path to convert it to a root resource class. You can use the @Path annotation with stateless session beans and singleton POJO beans.
JAX-RS and CDI have slightly different component models. By default, JAX-RS root resource classes are managed in the request scope, and no annotations are required for specifying the scope. CDI managed beans annotated with @RequestScoped or @ApplicationScoped can be converted to JAX-RS resource classes.
对于使用注入(inject)另一个 Bean 类的 Bean 的 Web 应用程序,该 Bean 需要能够在用户与应用程序交互的持续时间内保持状态。定义这种状态的方法是给bean一个作用域
@RequestScoped:用户在单个 HTTP 请求中与 Web 应用程序的交互。
@SessionScoped:用户通过多个 HTTP 与 Web 应用程序进行交互请求。
@ApplicationScoped:所有用户与网络应用程序交互时共享状态。
@Dependent:如果未指定,则默认范围;这意味着一个对象存在只为一个客户端(bean)提供服务并且具有相同的生命周期作为该客户端(bean)。
@ConversationScoped:用户与 servlet 的交互,包括 JavaServer Faces应用程序。 session 范围存在于开发人员控制的边界将其扩展到多个长时间运行对话的请求。全部长期运行对话的范围仅限于特定的 HTTP Servlet session ,并且可能不跨越 session 边界。
回答你的问题,就像你可以在另一个bean中进行上下文和依赖注入(inject)一样,每个bean将独立管理自己的状态。根据您要扮演的角色,您必须定义其范围。
https://docs.oracle.com/javaee/7/tutorial/jaxrs-advanced004.htm https://docs.oracle.com/javaee/7/tutorial/cdi-basic008.htm#GJBBK
关于java - JAX_RS 资源和 EJB 生命周期不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40530395/
JAX-RS 资源(用 @Path 注释的类)具有每个请求的默认生命周期。 现在EJB也有自己的生命周期,我的意思是当有一个EJB的引用时,这个引用实际上是管理EJB池的代理对象的引用。 当 EJB
我正在使用 Jersey 编写 JAX_RS 应用程序。所有以 JSON 形式返回单个对象的端点在 Tomcat 和 WildFly 中都可以正常工作。 一个返回对象集合的端点在 Tomcat 中工作
我跟踪了将 JDK 8 升级到 9 甚至 10 后遇到的问题,并创建了这个小示例来重现它。 如果我提出请求 curl -i -X OPTIONS http://localhost:8088/test/
我是一名优秀的程序员,十分优秀!