EJB - 性能问题(拥有更多EJB对性能有影响)

Kum*_*r D 3 java-ee ejb-3.0

我们正在开发一个包含大约400个数据库表的应用程 并且具有相同数量的EJB(All是本地接口,EJB是无状态的),并且一个EJB通过@EJB标记注入另一个EJB.

我怀疑的是,是否有更多的EJB对应用程序的性能有任何影响?

ewe*_*nli 10

配置和调整

您可能需要相应地调整系统大小.通常,每个EJB都有一个关联的池(但它是app.服务器特定的,我只有Glassfish经验).因此,如果您有400个不同的EJB,那么可能代表了大量的对象.但所有这些都可以调整.

本地EJB调用

关于EJB调用另一个,我做了一些测试.这是我得到的结果.

是时候调用一个执行循环的EJB,调用另一个帮助对象10'000,这个对象是:

  • Pojo:0毫秒
  • 本地EJB:63毫秒
  • 相同EAR中的远程EJB:172毫秒
  • 另一个EAR中的远程EJB:1735毫秒

我得出结论,如果EJB是本地的,那么EJB相互调用并不是性能问题.另请参阅使用POJO而不是EJB是否值得?.

部署和管理

EAR的部署时间还取决于EJB的数量(解析注释,部署描述符等).您可以进行一些测试以查看您的应用程序.服务器支持此类部署.

监控应用.有很多EJB可以很快变得复杂,具体取决于应用程序.服务器.在Glassfish中,JMX控制台和Web控制台无法真正扩展到应用程序.有很多EJB.例如,我们感兴趣的EJB需要在某个时间点的下拉列表中选择,这在有很多它们时不方便.

EJB/JPA和DAO

负责业务逻辑的SLSB应该是粗粒度的.您仍然可以使用细粒度的SLSB进行DAO.使用JPA,DAO现在非常精简并且主要包含JPA查询.如果可能的话,尝试减少DAO的数量并让一些DAO负责多个表可能仍然很有趣.看到JPA/EJB3杀死了DAO.