Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javaeewebjax-RS:我可以在其中使用实例变量吗';什么课?_Java_Thread Safety_Jax Rs - Fatal编程技术网

javaeewebjax-RS:我可以在其中使用实例变量吗';什么课?

javaeewebjax-RS:我可以在其中使用实例变量吗';什么课?,java,thread-safety,jax-rs,Java,Thread Safety,Jax Rs,我正在寻找线程安全的Servlet替代方案,我发现了JAX-RS技术 那么我可以在它的类中使用这样的实例变量吗(它是线程安全的吗): ?资源范围将默认为@RequestScope,因此将为每个请求创建一个新的资源实例 从 @RequestScoped 默认生命周期(不存在注释时应用)。在此范围内,将为每个新请求创建资源实例,并用于处理此请求。如果在请求处理中多次使用该资源,则将始终使用同一实例。如果资源是子资源,并且在匹配过程中返回的次数更多,则可能会发生这种情况。在这种情况下,只有在实例上才会

我正在寻找线程安全的Servlet替代方案,我发现了JAX-RS技术

那么我可以在它的类中使用这样的实例变量吗(它是线程安全的吗):


资源范围将默认为
@RequestScope
,因此将为每个请求创建一个新的资源实例

@RequestScoped

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

因此,只要
msg
不是
static
,就应该根据请求创建它


这也意味着在处理请求后,您将丢失资源中包含的任何状态,您试图解决的用例是什么?

我的项目中的操作需要使用单个变量共享状态的操作集,如
set()
register()
execute()
。所以,如果我使用Servlet,我必须创建两个类而不是一个来实现单个操作,因为Servlet不是线程安全的。谢谢:)我只想说JAX-RS和Jersey不是一回事。Jersey是JAX-RS的一个实现。JAX-RS有它的规范,Jersey实现了它,并添加了额外的特性。
@RequestScoped
注释不是JAX-RS规范的一部分,它是特定于Jersey的特性。虽然JAX-RS指定的默认范围是每个请求,但这完全取决于外部配置。我只是想提一下,因为这个问题没有提到泽西:-)
@Path("helloworld")
public class HelloWorldResource {

    private String msg;

    @GET
    public void doSmth() {
       this.msg = "test";
    }    
}