将EJB 3.1方法注释为REST是否违反了关注点分离原则?

时间:2014-07-11 20:27:32

标签: json design-patterns annotations jax-rs ejb-3.1

我们将构建一个在客户端运行angularjs的应用程序,以及一个提供和使用JSON数据的J2EE应用程序。

使用@Stateless注释(例如javax.ws.rs@path和其他与http相关的注释)在我们的@get EJB中直接公开我们的业务方法是不是一种坏习惯吗?我们担心如果它们充满了与“网络相关”的导入,我们的业务代码将变成“不纯的”。

或者我们只是偏执狂?

1 个答案:

答案 0 :(得分:1)

根据JavaEE参考:http://docs.oracle.com/javaee/6/tutorial/doc/gipjg.html无状态会话bean可以实现Web服务。所以,我认为应该可以将REST注释添加到无状态EJB中,以使该功能可用作Web服务

  

无国籍会话豆

     

无状态会话bean不会保持会话状态   客户端。当客户端调用无状态bean的方法时,   bean的实例变量可能包含特定于该客户端的状态   但仅限于调用的持续时间。当方法是   完成后,不应保留特定于客户端的状态。客户端   但是,可能会更改池中实例变量的状态   无状态bean,并且这个状态被保留到下一次调用   混合无状态豆。除了在方法调用期间,所有   无状态bean的实例是等价的,允许EJB   容器将实例分配给任何客户端。也就是说,状态   无状态会话bean应该适用于所有客户端。

     

因为它们可以支持多个客户端,所以无状态会话bean可以   为需要大量数据的应用程序提供更好的可扩展性   客户。通常,应用程序需要较少的无状态会话   bean比有状态会话bean支持相同的数量   客户端。

     

无状态会话bean可以实现Web服务,但是有状态   会话bean不能。