- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
EJB高级——事务处理 Agenda Container Managed Transaction Bean Managed Transaction CMT CMT Container Managed Transaction 程序员在Bean的源程序中没有事务边界控制的代码(如事务开始、回滚、提交等) 在部署描述符中指定事务属性,由容器控制事务的边界。 容器维护的事务是方法级的 即默认将一个方法当作一个事务执行 当方法执行的过程中,发生系统级异常,容器会自动将事务回滚,即将方法前面执行的结果恢复。 例子背景 银行账户例子 EJB提供存款、取款、获取余额的操作。 Remote接口 Home接口 Bean类实现(Part 1) Bean类实现(Part 2) Bean类实现(Part 3_1) Bean类实现(Part 3_1) Bean类实现(Part 3_2) Bean类实现(Part 3_1) 辅助异常类 设置事务属性 客户程序 客户程序 客户程序 输出结果(正常)——客户端 输出结果(正常)——服务端 输出结果(异常)——客户端 输出结果(正常)——服务端 BMT BMT Bean Managed Transaction 程序员在Bean的源程序中控制事务边界控制(如事务开始、回滚、提交等) 在部署描述符中指定由Bean控制事务的边界。 例子背景 银行账户例子 EJB提供存款、取款、获取余额的操作。 修改Bean类定义 修改withdraw方法 修改withdraw方法 修改withdraw方法 设置事务属性 一点说明 Bean Managed Transaction可以跨越方法边界 西安电子科技大学软件学院 西安电子科技大学软件学院 package bank; import javax.ejb.*; import java.rmi.*; public interface Banker extends EJBObject { public void deposit(String accountName, int amount) throws RemoteException, BankerFailureException; public void withdraw(String accountName, int amount) throws RemoteException, BankerFailureException; public int getBalance(String accountName) throws RemoteException, BankerFailureException; } 定义商业方法 package bank; import java.rmi.RemoteException; import javax.ejb.*; public interface BankerHome extends EJBHome { public Banker create() throws RemoteException, CreateException; } 定义create方法 package bank; //import ... public class BankerBean implements SessionBean { DataSource ds; Connection conn; public void ejbCreate() throws CreateException{ try{ InitialContext initialCtx = new InitialContext(); ds = (DataSource)initialCtx.lookup(java:comp/env/jdbc/BankDB); }catch(NamingException ex){ throw new CreateException(lookup datasource failed); }catch(Exception e){ throw new CreateException(operation failed); } } public void ejbRemove() {} public void ejbPassivate() {} public void ejbActivate() {} public void setSessionContext(SessionContext Context) {} //Part 2,3 } 实现ejbCreate方法:
文档评论(0)