ReaderInterceptor,WriterInterceptor线程安全吗?

时间:2018-12-25 11:03:49

标签: java java-ee jersey jax-rs jersey-2.0

我想从ReaderInterceptorWriterInterceptor调用无状态EJB,但不确定是我可以注入EJB还是每次查找EJB都需要这个拦截器?

2 个答案:

答案 0 :(得分:0)

规范jax-rs 2.0没有为每个请求创建实例。因此,它不是线程安全的

答案 1 :(得分:0)

JAX-RS 2.0规范的§6.4规定:

  

...为每个JAX-RS应用程序实例化每个过滤器或实体拦截器的单个实例。 ...

因此,根据定义,您的拦截器是单例的。但是,EJB的注入点将包含一个代理,该代理负责在每次调用无状态EJB时提供对未使用实例的访问。它可能会在预先创建的实例池中找到它,也可能只是创建并初始化一个新实例。

此外,EJB 3.2规范的第4.10.13节“非重入实例”指出:

  

容器必须确保只有一个线程可以随时执行无状态或有状态会话bean实例。因此,有状态和无状态会话Bean不必编码为可重入。 ...

总而言之,只需注入您的EJB。容器将代表您照顾线程安全问题。