再探DOCUMENTUM SESSION MANAGER

来源:互联网 发布:淘宝关注量最高的店铺 编辑:程序博客网 时间:2024/06/05 21:51
  • disconnect method VS release method

通过SESSION MANAGER获取的session,不应该调用disconnect method来断开这个session,而是应该用release method把它返回给连接池以便复用。

  • getSession method VS newSession method

getSession是从连接池获取一个可用的session,newSession是新创建一个session,前者更高效。但是有的时候getSession会引起一些问题。比如2个线程使用同一个shared session(2个线程肯定是通过getSession获取这个session的)指向同一个对象的实例,其中一个对这个实例进行了修改,即使另外一个线程没有进行修改操作,也会出现错误。如果你的程序阻塞严重,试着把一些getSession改成newSession。

  • abandon a session manager

以下操作要成对出现,否则当你不需要session manager的时候,它不能被正确放弃

• beginClientControl with no matching endClientControl.
• beginTransaction with no matching commitTransaction or abortTransaction.
• getSession or newSession with no matching release.

  • session race condition

当你释放session后,最好就不要再使用通过它获取的对象了,因为当这个session真正断开后,你就不能再使用这个对象,但问题是我们不知道什么时候这个session会断开。当然你可以通过IDfTypedObject的setSessionManager方法让SESSION MANAGER直接管理这个对象,但这相当耗费资源。


  • setIdentity method

连续对相同的repository调用setIdentity方法会抛出异常,如果想改变登入信息,应该先调用clearIdentity 方法

原创粉丝点击