再探DOCUMENTUM SESSION MANAGER

  • 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 方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值