高手 高手 高手 给我一个答案

05-04-26 jorwang

无状态:sessionbean

客户端调用:A();

远程接口方法:A

私有方法:S

私有变量:long startTime,endTime;

A(){

startTime = System.currentTimeMillis();

//todo: something

//invoke : S();

}

S() {

//todo : something

endTime = System.currentTimeMillis();

System.out.println("开始时间:"+startTime+"结束时间:"+endTime);

}

问题描述:

在一般情况下,时间没有任何问题,处理时间开始时间<结束时间,并且在一个正常的范围内,但是在实际系统运行过程中,会出现开始时间>结束时间 。我理解的情况下就是在sessionbean实例的A()方法被调用过程中,并且没有完成的时候,有其他进程进入这个方法。

导致的问题:

在出现这种情况下,事务会发生突然的终止。当然,随后的数据库操作当然就会发生异常。比如sqlserver出现:分布式事务已完成。请将此会话登记到新事务或 NULL 事务中。

请问有没有高手能够给我一个解释。