结合无状态和有状态连接

时间:2009-08-28 04:53:47

标签: java-ee ejb stateless stateful

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

1 个答案:

答案 0 :(得分:0)

  

哪个会打开连接状态?

你的意思是:

  1. 打开一个有状态连接,该连接将在调用服务器之间保持打开状态,并且在返回客户端时不会自动提交?
  2. 使用会话上下文中提供的安全凭据打开连接,以获取与用户自己的数据库用户/密码的连接?
  3. 在第一种情况下,虽然可以在StatelessSessionBean(SLSB)前面使用StatefulSessionBean(SFSB),但可能有更好的方法(例如使用命令模式来收集远程调用之间的交互,直到你准备承诺)。

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

      

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

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

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