请问EJB容器如何处理异常

09-05-12 spikeme

请问EJB容器如何处理异常?主要想知道处理异常的机制是怎么样的?

banq
2009-05-13 09:27

和平常一样,现在EJB进入POJO,基本与普通正常状况差别不太多。

xmuzyu
2009-05-13 15:01

EJB里面都有一个ejb object,当然了这在EJB2.X中才能看到,但是EJB3.O中虽然看不见,但是底层还是有相应的东东存在,EJB OBJECT负责处理事务以及资源注入还有异常处理等等,EJB异常分为应用程序异常和系统异常,系统异常是由于系统内部错误造成的,一般是RuntimeException以及子类,EJBException(它也是RuntimeException的子类)javax.rmi.RemoteException以及子类,所有的系统异常都会被容器自动捕获然后回滚事务(具体来说就是EJB OBEJCT来处理,当然了具体APP SERVER实现也许不同)而应用程序异常是我们自己定义的与业务有关系的异常,这种异常一般由我们应用开发者来捕获,然后报告相应的业务错误。

ps;RunntimeException和其它的的系统异常有一个不同,那就是它们可以转化为应用程序异常,具体就是通过@javax.ejb.ApplicationException,这样当容器捕获到标注了此注释的系统异常就不会回滚事务。

希望对你有点帮助。