方法条件
|
方法异常
|
容器行为
|
客户端视图
|
Bean方法运行在调用者的事务上下文中【注意A】。
这种情况可以发生在事务属性是Required、Mandatory和Supports。
|
AppException
|
直接抛出AppException。如果应用异常指定为产生回滚事务,则标记事务回滚。
|
接收AppException。除非应用异常指定为引起事务回滚,否则可以继续在事务中计算并最终提交事务。
|
所有其他的异常和错误
|
记录异常和错误【注意 B】。
标记事务回滚。
丢弃实例【注意C】
抛出javax.ejb.EJBTransactionRolledbackException到客户端【注意 D】
|
接收javax.ejb. EJBTransactionRolledbackException
继续事务是无效的。
|
|
Bean方法运行在容器在分发业务方法之前即时启动的事务上下文中。
这种情况可以发生在事务属性是Required和RequiresNew。
|
AppException
|
如果实例调用setRollbackOnly(),那么回滚事务,并再次抛出AppException。
如果应用指定为引起事务回滚,那么标记事务回滚,然后再次抛出AppException
|
接收AppException。
如果客户端在一个事务中执行,则客户端的事务不标记回滚,客户端可以继续工作。
|
所有其他异常
|
记录异常或错误。
回滚容器启动的事务。
丢弃实例。
抛出EJBException到客户端。【注意E】
|
接收EJBException。
如果客户端在一个事务中执行,那么客户端的事务可以标记为回滚,也可以不标记。
|
|
Bean方法运行在未指定的事务上下文中。
这种情况发生在事务属性是NotSupported、Never和Supports。
|
AppException
|
再次抛出AppExcepton
|
接收AppException。
如果客户端在一个事务中执行,则客户端的事务不标记回滚,客户端可以继续工作。
|
所有其他异常
|
记录异常或错误。
丢弃实例。
抛出EJBException到客户端。【注意F】
|
接收EJBException。
如果客户端在一个事务中执行,那么客户端的事务可以标记为回滚,也可以不标记。
|
Bean方法条件
|
Bean方法异常
|
容器行为
|
客户端接收
|
Bean是有状态或无状态的会话bean
|
AppException
|
再次抛出AppException
|
接收AppException
|
所有其他异常
|
记录异常或错误。
标记由实例已经启动的事务回滚,但还没有结束。
抛出EJBException到客户端。【注意 A】
|
接收EJBException
|
方法条件
|
方法异常
|
容器行为
|
客户端视图
|
Bean方法运行在调用者的事务上下文中【注意A】。
这种情况可以发生在事务属性是Required、Mandatory和Supports。
|
AppException
|
再次抛出AppException。如果应用异常指定为产生回滚事务,则标记事务回滚。
|
接收AppException。除非应用异常指定为引起事务回滚,否则可以继续在事务中计算并最终提交事务(如果实例调用setRollbackOnly则提交将会失败)。
|
所有其他的异常和错误
|
记录异常和错误【注意 B】。
标记事务回滚。
丢弃实例【注意C】
抛出javax.transaction.TransactionRolledbackException到远程客户端;抛出javax.ejb.EJBTransactionRolledbackException到本地客户端。
|
接收javax.transaction.TransactionRolledbackException或javax.ejb. EJBTransactionRolledbackException
继续事务是无效的。
|
|
Bean方法运行在容器在分发业务方法之前即时启动的事务上下文中。
这种情况可以发生在事务属性是Required和RequiresNew。
|
AppException
|
如果实例调用setRollbackOnly(),那么回滚事务,并再次抛出AppException。
如果应用指定为引起事务回滚,那么标记事务回滚,然后再次抛出AppException。
否则,尽量提交事务然后再次抛出AppException。
|
接收AppException。
如果客户端在一个事务中执行,则客户端的事务不标记回滚,客户端可以继续工作。
|
所有其他异常
|
记录异常或错误。
回滚容器启动的事务。
丢弃实例。
抛出RemoteException到远程或web服务客户端。【注意D】;抛出EJBException到本地客户端。
|
接收RemoteException或EJBException。
如果客户端在一个事务中执行,那么客户端的事务可以标记为回滚,也可以不标记。
|
|
Bean方法运行在未指定的事务上下文中。
这种情况发生在事务属性是NotSupported、Never和Supports。
|
AppException
|
再次抛出AppExcepton
|
接收AppException。
如果客户端在一个事务中执行,则客户端的事务不标记回滚,客户端可以继续工作。
|
所有其他异常
|
记录异常或错误。
丢弃实例。
抛出RemoteException到远程或web服务客户端。抛出EJBException到本地客户端。
|
接收RemoteException或EJBException。
如果客户端在一个事务中执行,那么客户端的事务可以标记为回滚,也可以不标记。
|
Bean方法条件
|
Bean方法异常
|
容器行为
|
客户端接收
|
Bean是有状态或无状态的会话bean
|
AppException
|
再次抛出AppException
|
接收AppException
|
所有其他异常
|
记录异常或错误。
标记回滚由实例已经启动的但还没有完成的事务。
丢弃实例。
抛出RemoteException到远程客户端或web服务客户端【注意 A】;抛出EJBException到本地客户端。
|
接收RemoteException或EJBException
|
Bean方法条件
|
Bean方法异常
|
容器动作
|
Bean是带web服务客户端视图的无状态会话bean
|
系统异常
|
记录异常或错误。
丢弃实例。
|
方法条件
|
方法异常
|
容器动作
|
Bean方法运行在调用者的事务上下文中【注意A】。
这种情况可以发生在事务属性是Required。
|
AppException
如果应用异常指定为产生回滚事务,则标记事务回滚。
|
如果实例调用setRollbackOnly,则回滚事务然后再次抛出AppException到资源适配器。
否则,若应用异常没有指定为产生事务回滚则尽力提交事务并再次抛出AppException。
|
系统异常
|
记录异常或错误【注意A】。
回滚容器启动的事务。
丢弃实例【注意B】。
抛出封装了原始异常的EJBException到资源适配器。
|
|
Bean方法运行在未指定的事务上下文中。
这种情况发生在事务属性是NotSupported。
|
AppException
|
再次抛出AppException到资源适配器。
|
系统异常
|
记录异常或错误。
回滚容器启动的事务。
丢弃实例。
抛出封装了原始异常的EJBException到资源适配器。
|
Bean方法条件
|
Bean方法异常
|
容器动作
|
Bean是消息驱动bean
|
AppException
|
再次抛出AppException到资源适配器。
|
系统异常
|
记录异常或错误。
标记回滚由实例启动的但还没有完成的事务。
丢弃实例。
抛出封装了原始异常的EJBException到资源适配器。
|
Bean方法条件
|
Bean方法异常
|
容器动作
|
Bean是消息驱动bean
|
系统异常
|
记录异常或错误。
丢弃实例。
|
方法条件
|
方法异常
|
容器动作
|
Bean超时回调方法运行在在分派方法之前由容器启动的事务上下文中
|
系统异常
|
记录异常或错误【注意A】。
回滚容器启动的事务。
丢弃实例【注意B】。
|
方法条件
|
方法异常
|
容器动作
|
Bean超时回调方法可以使用UserTransaction。
|
系统异常
|
记录异常或错误【注意A】。
标记回滚实例启动的但还没有完成的事务。
丢弃实例【注意B】。
|