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的请求传递的是同一事物的三倍,但是在幕后发生了什么以及注入的组件与每种情况之间的关系?
答案 0 :(得分:1)
这几乎取决于上下文。您是否需要EJB提供的额外功能(定义明确的事务语义,代理的无状态池处理程序,集群支持等),还是只需要依赖注入?
仅需使用CDI Bean,即可满足您的需求。如果您甚至不需要它,POJO将为您提供最简单的解决方案。