使用@Stateless注释Java REST资源有哪些好处/区别? 例如,考虑在RealF飞(或另一个JavaEE应用程序服务器)实例上运行的以下REST资源… @Path("/library") public class Library { @GET @Path("/books") public String getBooks() {...} }

使用@Stateless注释Java REST资源有哪些好处/区别? 例如,考虑在RealF飞(或另一个JavaEE应用程序服务器)实例上运行的以下REST资源… @Path("/library") public class Library { @GET @Path("/books") public String getBooks() {...} },java,rest,Java,Rest,及 当客户端程序调用资源时,应用程序服务器处理这些类的方式有什么不同?将REST资源注释为无状态有什么好处?在Jax rs 2.0的Jersey实现中,如果没有注释,默认值为@RequestScope 默认生命周期(不存在注释时应用)。在此范围内,将为每个新请求创建资源实例,并用于处理此请求。如果在请求处理中多次使用该资源,则将始终使用同一实例。如果资源是子资源,并且在匹配过程中返回的次数更多,则可能会发生这种情况。在这种情况下,只有在实例上才会为请求提供服务器 如果使用@Stateless注释


当客户端程序调用资源时,应用程序服务器处理这些类的方式有什么不同?将REST资源注释为无状态有什么好处?

在Jax rs 2.0的Jersey实现中,如果没有注释,默认值为@RequestScope

默认生命周期(不存在注释时应用)。在此范围内,将为每个新请求创建资源实例,并用于处理此请求。如果在请求处理中多次使用该资源,则将始终使用同一实例。如果资源是子资源,并且在匹配过程中返回的次数更多,则可能会发生这种情况。在这种情况下,只有在实例上才会为请求提供服务器


如果使用@Stateless注释,则类将成为无状态EJB。这允许有一个容器管理的实例池。允许重用实例,通常可以提高可伸缩性。

通过使用
@Stateless
进行注释,可以使其成为(无状态的)
EJB
@Stateless
@Path("/library")
public class Library {

   @GET
   @Path("/books")
   public String getBooks() {...}
}