JAX-RS资源为POJO,CDI和EJB

时间:2018-09-25 12:07:37

标签: java java-ee jax-rs ejb cdi

JAX-RS根资源由@Path批注定义,并且可能使用托管组件来完成实际工作,例如:

@Path("resource")
public class Resource
{
  @Inject
  Worker worker;

  @GET
  public String getDetails() {
    return worker.getDetails();
  }
}

现在我可以将这个JAX-RS根资源转移到CDI bean中:

@RequestScoped
@Path("resource")
public class Resource {...}

或者到EJB:

@Stateless
@Path("resource")
public class Resource {...}

那么-进行POJO,CDI或EJB方式的后果是什么?从外部来看,对URL的请求传递的是同一事物的三倍,但是在幕后发生了什么以及注入的组件与每种情况之间的关系?

1 个答案:

答案 0 :(得分:1)

这几乎取决于上下文。您是否需要EJB提供的额外功能(定义明确的事务语义,代理的无状态池处理程序,集群支持等),还是只需要依赖注入?

仅需使用CDI Bean,即可满足您的需求。如果您甚至不需要它,POJO将为您提供最简单的解决方案。