EJB3业务代表

myk*_*ola 6 java jsf java-ee ejb-3.0

在使用EJB3时是否有任何理由让代理?因为我从委托中看到的唯一真正好处是它允许隐藏EJB体系结构的查找和访问细节.好吧它也提供了一些解耦,但它几乎未使用,imho.使用EJB3我们有注入,所以现在我可以用@EJB注释创建一个变量并按原样使用它.我还需要代表吗?这种注射资源消耗了吗?我的意思是,如果我在JSF的请求中使用它,托管bean可能更好地使用委托只是为了减少这些注入调用?

谢谢!

ewe*_*nli 7

让我们回顾一下原始业务委托模式力量:

  • 表示层客户端需要访问业务服务.
  • 不同的客户端(例如设备,Web客户端和胖客户端)需要访问业务服务.
  • 业务服务API可能会随着业务需求的变化而变化.
  • 期望最小化表示层客户端与业务服务之间的耦合,从而隐藏服务的底层实现细节,例如查找和访问.
  • 客户端可能需要实现业务服务信息的缓存机制.
  • 期望减少客户端和业务服务之间的网络流量.

所有这些力量今天仍然具有相关性 - 它们不是必须存在于每个项目中,但可以.

主要的变化是我们不需要业务委托来最小化耦合(斜体).依赖注入解决了查找和访问的问题.

我喜欢亚当·比恩(Adam Bien)分析:关于耦合的一个问题仍然没有得到解决,这是例外.例外情况现在未经检查,但仍然存在.客户端是否应该完全屏蔽EJB异常,这又取决于项目中存在的力量.

在引入业务委托模式以解决查找和访问问题的情况下(我怀疑是很多项目的情况),我们实际上不再需要它了.如果业务代表是出于其他原因,它仍然有意义.

PS:根据我自己的经验,资源注入从来就不是一个性能问题(除了注入的毫秒之外,我总是遇到更严重的性能问题:)