【问题标题】:Combining Stateless & Stateful Connection结合无状态和有状态连接
【发布时间】:2010-11-23 14:58:41
【问题描述】:

我的应用程序有一个无状态 EJB。现在我需要通过 Stateful 进行一些数据库操作。这个无状态 EJB 可以访问将打开有状态连接的 DB 实用程序吗?这会导致任何设计/性能问题吗?

【问题讨论】:

  • 应用程序访问数据库并不意味着您需要有状态 bean。

标签: jakarta-ee ejb stateless stateful


【解决方案1】:

哪个会打开有状态的连接?

你的意思是:

  1. 打开一个有状态的连接,该连接将在对服务器的调用之间保持打开状态,并且在返回客户端时不会自动提交?
  2. 使用会话上下文中可用的安全凭据打开连接以获取与用户自己的数据库用户/密码的连接?

在第一种情况下,尽管可以在 StatelessSessionBean (SLSB) 前面使用 StatefulSessionBean (SFSB),但可能有更好的方法(例如,使用命令模式来收集远程调用之间的交互,直到您准备好提交)。

在第二种情况下,DataSource.lookup(username, password) 可能会有所帮助,尽管您的 DataSource 查找可能需要始终如一地提供用户名和密码以保证接收相同的连接。

这会导致任何设计/性能问题吗?

在这两种情况下,您都必须非常小心,不要犯基本的安全错误(例如以纯文本形式发送密码)。我从来没有使用过任何一种方法,并且倾向于重新设计一个包含任何一种方法的解决方案。

与安全性和其他设计问题(例如维护中的脆弱性)相比,我不太担心性能问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-10
    • 2016-09-11
    • 1970-01-01
    • 2011-07-16
    相关资源
    最近更新 更多