Tommy讲EJB 3.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Tommy讲EJB 3

EJB 3.0 Tutorial 1.EJB2.0存在的问题 1)开发的复杂性,使用一个ejb2.0开发一个ejb组件,需要编写很多接口和类, 并且每个接口和类都要继承或则实现ejb2.0中定义的接口; 2)部署的复杂性,使用xml文集对开发的ejb组件进行描述,在编译器无法检查描述信息是否有错误; 3)调试和测试的复杂,使用ejb2.0开发的ejb组件必须运行在容器中,离开ejb容器这些组件无法运行, 所以每次修改代码之后,都需要重新编译部署后再去测试,增加了测试工作量; 总 之:开发难,部署烦,调试不简单; 解决方案:为了改进上面的问题,EJB3.0就此提出..... 2.EJB3.0在EJB2.0基础上所做的改进: (1).EJB3.0 API的简化 1)没有home/object接口; 在EJB3.0中所有的业务逻辑方法的定义都放在业务接口中;业务接口可以是远程的也可以是本地的; 如果是一个远程业务接口,在这个接口中定义了业务逻辑方法,这些方法不允许抛出 javax.rmi.RemoteException.但是可以抛出应用级别的异常; 2)没有component接口; 在EJB3.0中bean类不需要实现组件接口,但是需要实现业务接口; 在EJB2.0中bean生命周期的回调方法定义在组件接口中,但是EJB3.0中bean不实现组件接口, 那如何定义生命周期回调方法? 1.在bean类中定义生命周期回调方法,并且用特殊的annotation进行标注; 2.在一个单独的类中定义生命周期回调方法,需要用特殊的annotation进行标注,然后在bean中引用; 3)使用java annotation作为描述ejb组件的方式; 优势:描述过程简单,在编译期就可以检查信息是否有问题,在EJB3.0中也可以使用部署描述文件来描述 ejb组件,如果一个ejb组件既使用annotation进行描述,又使用部署描述文件进行描述, 则部署描述文件中描述的信息优先; 4)提供另外两种获取资源的方式; 在EJB2.0:通过InitialContext的lookup方法来获取资源; 在EJB3.0:通过EJBContext的lookup方法;通过依赖注入方式; 3.在EJB3.0中开发一个无状态的Session Bean 1)提供远程/本地业务接口,并且在业务接口中声明商业方法; 2)提供一个bean类,实现远程/本地业务接口,实现在接口中定义的商业方法; 3)在bean类中使用@Stateless进行标注,并且使用@Remote指定远程业务接口,使用@Local指定本地业务接口; 4)如果需要定义生命周期回调方法,可以在bean类中定义. 4.在EJB3.0中开发一个有状态的Session Bean 1)提供远程/本地业务接口,并且在业务接口中声明商业方法; 2)提供一个bean类,实现远程/本地业务接口,实现在接口中定义的商业方法; 3)在bean类中使用@Stateful进行标注,并且使用@Remote指定远程业务接口,使用@Local指定本地 业务接口; 4)如果需要定义生命周期回调方法,可以在bean类中定义. @PostConstruct=======ejb2.0中的ejbCreate() @ProPassivate========ejb2.0中的ejbPassivate() @PostActive==========ejb2.0中的ejbActivate() @PreDestroy==========ejb2.0中的ejbRemove() 5.在EJB3.0中开发一个消息驱动Bean 1)提供一个bean类,实现javax.jms.MessageListener接口; 2)使用@MessageDriven进行标注,并且指定其他相关的信息; 6. 无状态session bean的生命周期: 1)newInstance; 2)如果有声明依赖注入,则进行依赖注入; 3)如果有声明PostConstruct,则调用这个方法; 4)bean被回收之前,如果有声明PreDestroy方法,则调用这个方法; 有状态session bean的生命周期: 1)newInstance; 2)依赖注入(可选); 3)PostConstruct(可选); 4)PrePassivate(可选); 5)PostActivate(可选); 6)PreDestroy(可选); 7.注意: annotation的作用跟ejb-jar.xml是相同的;但是方式是显然不同的; meta-annotation:标注annotation的annotation,标注指定标注的是类还是方法; @Retention(RetentionPolicy.CLASS):标注会出现在.

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档