2016-11-25 2 views
-3

Java EE에서 안정적인 API 디자인을 개발하고자하지만 Restful 서비스 구현의 다른 모델을 견뎌야합니다.Java EE의 RESTful 디자인 패턴

@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); 
    } 

    .... 
} 

및 넷빈즈에 의해 생산되는 두 번째 같이이다 :

첫 번째 모델은 데이터를 검색하기 위해 나머지 클래스에서 @EJB를 사용

@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 (Stateless Java Bean)이며 @PersistenceContext를 사용하여 JPA의 인스턴스를 가져오고 AbstractFacade를 확장한다는 점입니다.

그러나 첫 번째 메소드에서는 @EJB를 사용하여 Bean의 인스턴스 만 검색합니다.

어느 쪽을 원하십니까? 그리고 왜?

+4

이것은 완전히 REST와 관련이 없으며 질문은'@ EJB'와'@ PersistenceContext '에 관한 것입니다. 질문을 편집하고 질문을 공식화하는 데 필요한 수준으로 줄이십시오. –

+0

@Lutz Horn, 저는 Rest 기반 API를 구현하는 것이 더 나은 방법인지 알고 싶습니다. 그리고 왜? – user335870

+2

상관 없어요. REST는 서로 다른 배선 종속성 사이에서 선택하는 것이 아닙니다. 두 클래스 모두 REST와 관련된 모든 것이 동일합니다. –

답변

2

중요하지 않습니다. REST는 서로 다른 배선 종속성 사이에서 선택하는 것이 아닙니다. 두 클래스 모두 REST와 관련된 모든 것이 동일합니다.