我打算在Java EE中开发静止的API设计,但我面临着拖车的静止服务的不同模型。
第一个模型在其余类中使用@ejb来检索数据:
@Path("/users")
public class UserResource
{
@EJB
UsersFacade em;
@GET
@Produces( { MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON } )
@Path("{name}")
public User getUser( @PathParam("name") String _name )
{
UsersBean u = em.findByName(_name );
if ( u == null )
{
throw new WebApplicationException( 404 );
}
return User.fromEntity( u );
}
....
}
和由Netbeans产生的第二个是这样的:
@Stateless
@Path("entities.customer")
public class CustomerFacadeREST extends AbstractFacade<Customer> {
@PersistenceContext(unitName = "CustomerDBPU")
private EntityManager em;
public CustomerFacadeREST() {
super(Customer.class);
}
@GET
@Path("{id}")
@Produces({"application/xml", "application/json"})
public Customer find(@PathParam("id") Integer id) {
return super.find(id);
}
....
}
您可能会注意到,这里的区别在于,第二种方法中,REST类实现是SLJB(无状态Java bean),它使用@persistenceContext来获取JPA的实例,并且还扩展了AbstractFacade。
。但是在第一个方法中,它仅使用@ejb检索bean的实例。
您更喜欢哪一个?为什么?
这没关系。休息不是要在不同的接线依赖方式之间选择。这两个类在与休息有关的所有事物中都是相同的。