2016-11-25 15 views
-3

Java EEで安心なAPIデザインを開発しようとしていますが、私はRestfulサービスのさまざまな実装モデルに直面しています。Java EEのRESTfulデザインパターン

最初のモデルは、データを取得するために、残りのクラスで@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); 
    } 

    .... 
} 

@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によって生成されたもう一つは、このようなものですここでの違いは、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に関連するすべてのもので同一です。