Jakarta ee 在JavaEE7中将JAX-RS层、EJB层和JSF层合并到一个POJO中?
我正在学习Jakarta ee 在JavaEE7中将JAX-RS层、EJB层和JSF层合并到一个POJO中?,jakarta-ee,jax-rs,ejb-3.1,java-ee-7,Jakarta Ee,Jax Rs,Ejb 3.1,Java Ee 7,我正在学习javaee7教程,该教程随GlassFish提供。 据我所知,CDI注入在JAX-RS层中是可能的,这在以前的版本中是不可能的 EE版本-如果我错了,请纠正我 此外,单个bean可以是EJB、WebService和managedbean(用于JSF处理) 下面的示例直接来自。如您所见,通过使用三个注释@Named、@Stateless和@Path,三个层被组合成一个层。我想这在早期版本的EE中是不可能的。这一切都很棒,减少了大量代码。但是应用程序的设计没有任何严重的影响。例如,我目前
javaee7
教程,该教程随GlassFish
提供。
据我所知,CDI注入在JAX-RS层
中是可能的,这在以前的版本中是不可能的
EE版本-如果我错了,请纠正我
此外,单个bean可以是EJB
、WebService
和managedbean
(用于JSF处理)
下面的示例直接来自。如您所见,通过使用三个注释@Named、@Stateless和@Path
,三个层被组合成一个层。我想这在早期版本的EE中是不可能的。这一切都很棒,减少了大量代码。但是应用程序的设计没有任何严重的影响。例如,我目前使用EE5,其中表示层(JSF)、业务层(EJB)和web服务层(JAX-RS)被清楚地分开。三个不同的类和容器管理依赖项注入。如下图所示,三合一的“糖果”版本是否存在安全漏洞
/**
* @author Arun Gupta
*/
@Named
@Stateless
@Path("movie")
public class MovieFacadeREST extends AbstractFacade<Movie> {
@PersistenceContext
protected EntityManager em;
public MovieFacadeREST() {
super(Movie.class);
}
@POST
@Override
@Consumes({"application/xml", "application/json"})
public void create(Movie entity) {
super.create(entity);
}
@PUT
@Override
@Consumes({"application/xml", "application/json"})
public void edit(Movie entity) {
super.edit(entity);
}
@DELETE
@Path("{id}")
public void remove(@PathParam("id") Integer id) {
super.remove(super.find(id));
}
@GET
@Path("{id}")
@Produces({"application/xml", "application/json"})
public Movie find(@PathParam("id") Integer id) {
return super.find(id);
}
@GET
@Override
@Produces({"application/xml", "application/json"})
public List<Movie> getAll() {
return super.getAll();
}
@GET
@Path("{from}/{to}")
@Produces({"application/xml", "application/json"})
public List<Movie> findRange(@PathParam("from") Integer from, @PathParam("to") Integer to) {
return super.findRange(new int[]{from, to});
}
@GET
@Path("count")
@Produces("text/plain")
public String countREST() {
return String.valueOf(super.count());
}
@Override
protected EntityManager getEntityManager() {
return em;
}
}
/**
*@作者阿伦·古普塔
*/
@命名
@无国籍
@路径(“电影”)
公共类MovieFacadeREST扩展了AbstractFacade{
@持久上下文
受保护的实体管理器em;
公共电影导演(){
超级(电影类);
}
@职位
@凌驾
@使用({“application/xml”、“application/json”})
公共void创建(电影实体){
超级创建(实体);
}
@放
@凌驾
@使用({“application/xml”、“application/json”})
公共无效编辑(电影实体){
超级编辑(实体);
}
@删除
@路径(“{id}”)
公共无效删除(@PathParam(“id”)整数id){
super.remove(super.find(id));
}
@得到
@路径(“{id}”)
@产生({“application/xml”、“application/json”})
公共电影查找(@PathParam(“id”)整数id){
返回super.find(id);
}
@得到
@凌驾
@产生({“application/xml”、“application/json”})
公共列表getAll(){
返回super.getAll();
}
@得到
@路径(“{from}/{to}”)
@产生({“application/xml”、“application/json”})
公共列表findRange(@PathParam(“from”)整型from,@PathParam(“to”)整型to){
返回super.findRange(新的int[]{from,to});
}
@得到
@路径(“计数”)
@生成(“文本/纯文本”)
公共字符串countREST(){
返回字符串.valueOf(super.count());
}
@凌驾
受保护的EntityManager getEntityManager(){
返回em;
}
}
包括CDI(aka)所需支持的1.1和勘误表C002:
在同样支持托管bean的产品中,实现必须
支持将托管bean用作根资源类、提供程序和
应用程序子类。在同样支持JSR 299的产品中,
实现必须同样支持使用JSR299样式的托管
豆。提供者和应用程序子类必须是Singleton或use
适用范围
所以,这种事情以前是可能的。请参阅,它将许多EE 6技术合并到一个类中。教程在哪里?你所问的问题也应该在该教程中提及。@Tiny:代码的源代码链接在上面