在session bean中跨数据库的事务处理的解决,我又学习了一些资料,觉得在ejb中异常的处理还是有许多要注意的地方。
在ejb中通常分两类异常,一类为系统异常,一类为应用程序异常(这里暂不包含JVM的 异常,对 JVM 异常我们一般也无能为力),对于应用程序的异常,ejb容器不会去自动处理,这就象我在上篇blog中说的,当我们在进行跨数据库操作时抛出了 SQLException异常,容器不会管,所以做不到事务的回滚,我们必须要手动的调用sessionContext的方法来让容器处理异常,达到事务 的一致性;而对于系统异常,ejb容器是会自动去处理的,即使我们对它进行了catch,ejb容器仍然会知道,会去处理,所以这给了我们处理跨数据库操 作维持事务的第二种方法,就是我们在ejb方法中捕获我们实际操作数据库的异常然后重新抛出一个系统异常,例如EJBException,这样容器就会察 觉接手处理,从而达到跨数据库事务的自动维护。在这里有个细节就是我要是在业务逻辑处理中抛出EJBException,而在ejb方法中手动进行了 catch,则此时容器是不会觉察到系统异常的,但如果我仍在dao中抛出ejbexception,我在session bean中调用它,竟然不用手写catch,容器会自动捕获进行处理,并且能做到事务的维护,当然我在dao中抛出一个ejbexception会显的极 不合适;所以最好还是在ejb方法中捕获dao抛出的应用程序异常,而在catch中抛出一个ejbexception,让容器去处理,事实上这时你是不 能再在ejb方法中去catch这个ejbexception了,容器不让你这样写代码。
可见ejb容器的异常处理还是挺完备的(有点象废话),对于其完善的异常处理和声名性事务管理还要再学习学习。
慢慢发现ejb还是有很多值得学习和使用的地方,并非现在所谓的轻量级解决方案所说的一无事处,,关于其在分布式系统中的应用有时间真应该花点时间好好研究一下!!
分享到:
相关推荐
EJB 具有事务的处理属性
j2ee1.3中实体Bean与之附带的数据库之间实现事务处理!
轻松学会EJB,包括开发流程,事务处理,Entity基础和高级特性,Time Service,安全,Web Service,会话Bean,消息驱动bean,资源注入
EJB 在大型系统中的应用包括远程方法调用、负载均衡、透明的故障转移、后端集成、事务处理、集群、动态重新部署、清洁关闭、日志记录和审核、系统管理、线程处理、消息队列、对象生命周期管理、资源池、安全性和缓存...
4.2.2 分布式事务处理、XA规范和 2PC协议 192 4.2.3 使用JTA全局事务保证多 数据库的一致性 193 4.3 事务隔离、传播属性的设置 198 4.3.1 并发访问和隔离 198 4.3.2 事务属性 199 4.4 EJB的事务管理 201 4.4.1 容器...
Java EJB JTA JTS用法示例源代码,例子对基于JTA的事务处理的实现进行了讨论,其中事务对象UserTransaction在EJB组件中执行,其实事务对象UserTransaction也可以在客户端使用。 J2EE包括了两套规范,用来支持...
事务,并发,隔离级别,JTA 事务,EJB,BMT,CMT,Spring,异常处理 异常处理还没有整理。 内容80%抄袭
详细的介绍了EJB,entitybean,messagedriverbean messagebean,以及容器的用法,事务的处理
内容包括事务及其控制的基本概念,Oracle中的事务处理,以及JDBC,EJB,JTA事务管理内容的总结,最后还介绍了事务管理的技巧,是了解和学习JAVA事务处理不可多得的第一手资料!
EJB (Enterprise Beans )是基于分布式事务处理的企业级应用程序的组件。 Sun公司发布的文档中对EJB的定义是: EJB是用于开发和部署多层结构的、分布式的、面向对象的Java应用系统的跨平台的构件体系结构。
目录 1技术总述 7 2开发环境介绍 7 2.1搭建开发环境 7 2.2MyEclipse 10 3SessionBean(会话Bean) 18 3.1会话Bean调用架构 18 3.2会话Bean的客户 18 3.3会话Bean的组成 19 ...6EJB事务 76 7定时器 77 8拦截器 77
JavaEE6活动我们将演示维护干净代码以及如何使用... 例如,一个bean可以定义事件,另一个bean可以运行事件,另一个bean可以处理该事件。 无论bean位于哪个包或层中,在使用事件时都不会发生代码耦合。 在示例中,我们
EJB3.0实例教程PDF 黎活名著 1.2 联系作者....................................................................................................................................................................
④ EJB Container是用于管理EJB Object的设备,它负责EJB对象的生命周期的管理,实现EJB对象的安全性,协调分布式事务处理,并负责EJB对象的上下文切换; ⑤ EJB规范提供了这样的一种机制,你可以通过在运行时设置...
虽然MDB负责处理消息,但是由运行MDB的EJB容器负责处理服务(事务、安全、资源、并发、消息确认,等等),使bean开发者把精力集中在处理消息的业务逻辑上。传统的JMS应用程序必须定制地编写一部分这些服务。MDB在...
这样开发人员就不必关心一些底层技术,比如事务处理,安全等各个方面,而是把重点放在怎样实现业务逻辑上。但是我们应该注意,如果开发的应用不是分布式的情况下,那么采用EJB有可能大大降低系统的性能。因为,EJB...
JThink包括以下几部分内容:资源管理,请求处理,事务处理,连接数据源,数据访问,EJB组件开发,EJB组件访问,日志处理等。 此版本是JThink框架的M7版,即第七次修定版本,在使用过程中发现有何问题或建议,请将问题...
商业逻辑层 上一步将相应的事件数据传过来,最终调用EJB组件处理与数据库相关的业务逻辑,EJB组件实现了数据库处理及商业逻辑的具体封装、事务处理、引用完整性等 数据存取层 SQL Server JDBC driver APUSIC ...
1.3 Java事务处理总结 1.4 JavaBean中使用JDBC方式进行事务处理 1.5 JSP 隐式对象简介 1.6 Java解析XML的四种方法 1.7 struts1和truts2比较 1.8 Tomcat5启动流程与配置详解 1.9 HttpServlet详解 1.10 Ant使用...
并交给控制器类ShoppingClientController做出处理商业逻辑层 上一步将相应的事件数据传过来,最终调用EJB组件处理与数据库相关的业务逻辑,EJB组件实现了数据库处理及商业逻辑的具体封装、事务处理、引用完整性等...