Transactions and Exceptions

原创 2007年09月22日 22:52:00

Exceptions and Transactions
异常对事务的结果有很大的影响。
Application Exceptions Versus System Exceptions

系统异常代表未知的内部错误。当应用服务器发生内部错误时,EJB容器就会抛出系统异常。如

果希望终止业务流程的执行,业务逻辑也是可以抛出系统异常的。应用异常通常是业务逻辑的一

部分。他们代表了经过强类型定义之后的业务领域的特定问题或错误,这些问题或错误是不需要

终止或回滚的业务流程的。

系统异常
系统异常包括java.lang.RuntimeException及其子类(EJBException是RuntimeException的一个

子类)和java.rmi.RemoteException及其子类。RuntimeException子类和RemoteException子类

的区别在于,前者可藉由@java.ejb.ApplicationException注解转化为应用异常。

不标注@ApplicationException的RuntimeException都将由容器自动从方法中抛出,并引起事务

回滚。所以我们无需抛出也无需捕获。

容器在自动处理系统异常时,通常会做如下几件事情:
1.回滚事务
2.将异常记录到日志中,以警示系统管理员
3.丢弃EJB实例
丢弃EJB实例对SLSB影响不大,对SFSB影响非常严重。

作为经验法则,请将非业务子系统的异常(比如JDBC抛出的SQLException,或者JMS抛出

JMSException)作为EJBException(或者是可以引起回滚的@ApplicationException异常)重新

抛出,并允许EJB容器自动回滚事务,将bean实例丢弃。

应用异常
我们可以使用@java.ejb.ApplicationException注解来强制要求应用异常自动回滚事务:
此注解同样也可用于RuntimeException和RemoteException的子类。这一点非常有价值,因为你

可能并不希望将抛出的RuntimeException包装成EJBException,或者不希望某个

RemoteException的子类回滚事务。 

hibernate4在执行sql时出现nested transactions not supported

环境:hibernate4  public void insertPaperContent(Integer author,String paperContent) { String sql = "...
  • zhanghe687
  • zhanghe687
  • 2016年05月18日 15:09
  • 3763

java中的异常--Exceptions in Java-- 第二部分

 然而,很多时候,你将希望传达更多的错误信息而不只是一个java.lang中的类。通常这个异常类本身标志遇到这个不正确的情况。例如,如果一个被抛出异常拥有IllegalArgumentExceptio...
  • zxs9999
  • zxs9999
  • 2008年01月19日 23:07
  • 1147

c++教程(二十三: Exceptions)

Exceptions(异常)Exceptions 异常提供了一种方法来对程序中的异常情况(如运行时错误)进行响应,将控制传递给称为handlers处理器的特殊函数。若要捕获异常,则在异常检查下放置一部...
  • on2way
  • on2way
  • 2017年02月07日 21:11
  • 795

Java中常见的Exceptions

Java代码实现中经常会碰到异常需要抛出来,我们一起了解一下常见的异常信息: Throwable Exception Error RuntimeException ClassNotFoundExce...
  • smszhuang168
  • smszhuang168
  • 2015年11月29日 23:43
  • 1337

TypeError:exceptions must be old-style classes or derived from BaseException, not str

py2.5之后不能直接把非继承自BaseException的当异常抛出,不过可以这样 #!/usr/bin/python def functionName(level): try: ...
  • u013571243
  • u013571243
  • 2015年10月01日 09:29
  • 1320

org.hibernate.TransactionException: nested transactions not supported错误的解决方案

出现错误的根本原因不在于配置文件,而是在于hibernate的SessionFactory的生成策略 在hibernate4中已经把原有的SessionFactory sessions = cf...
  • niguangfeixiang911
  • niguangfeixiang911
  • 2015年08月13日 12:16
  • 901

nested transactions not supported

org.hibernate.TransactionException: nested transactions not supported 又查了资料,原来Hibernate根本就不支持Nest...
  • zengshunyao
  • zengshunyao
  • 2014年05月18日 04:23
  • 5570

(yum中途中断)There are unfinished transactions remaining. You might consider running yum-complete-tra

yum命令安装程序时,总是出现如下警告: There are unfinished transactions remaining. You might consider running yum-...
  • G1036583997
  • G1036583997
  • 2013年12月30日 17:06
  • 3140

异常(Exceptions)

关于Java异常处理的一些总结
  • Autumn_Zen
  • Autumn_Zen
  • 2016年02月13日 11:43
  • 708

解决 使用FragmentTabHost 和 viewpager时编译器报错 FragmentManager is already executing transactions

这几天写的项目里  使用了FragmentTabHost 加Fragment 嵌套viewpager的模式 在运行项目的时候 点击tab切换到装有viewpager的那一栏时,报错 查看代...
  • QuincyJiang
  • QuincyJiang
  • 2016年09月24日 20:12
  • 4089
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Transactions and Exceptions
举报原因:
原因补充:

(最多只允许输入30个字)