我想从ReaderInterceptor
,WriterInterceptor
调用无状态EJB,但不确定是我可以注入EJB还是每次查找EJB都需要这个拦截器?
答案 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。容器将代表您照顾线程安全问题。