网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.Java多线程程序设计详细解析.
.菜鸟初学Java的备忘录之第一次接.
.使用PreparedStatement减少开发时.
.使用Web服务和Ja.NET来实现互用性.
.无线JAVA的移动游戏解决方案.
.实用Script详解:一触即停的滚动.
.Java编程新手入门:运算符优先级.
.Candle点亮你的Web应用(CandleRM.
.getUTCDay 方法.
.FreeBSD应用心得之安装J2EE开发环.
.为什么extends是有害的(一).
.用Eclipse Visual Editor 开发SW.
.一种高效的javabea分页For SqlSe.
.用JBuilder2007开发扩展JSF标签的.
.java设计模式之Template(算法的骨.
.使用JBuilder2007开发Web应用程序.
.Java应用利器组合:Ant+JUnit+Co.
.一个简单的访问数据库的应用程序.
.Forte for Java简介与基础安装.
.让Java程序带着JRE一起上路.

循速渐进学用Session Bean(四)

发表日期:2008-1-5


Session Bean要求、限制和许可

  在EJB规范中,对Session Bean有一些限制和要求。这些限制会指出哪些是bean必须做的,哪些是不能做的,以及bean必须实现的一些方法和接口。也有一些规范指出哪些处理是答应做的,这是为了避免你以为这些处理是被其它限制禁止的。

  实现SessionBean接口

  session bean必须实现Javax.ejb.SessionBean接口

   声明该类为Public,而不是Final或者Abstract

   要记住EJB容器需要创建bean实例,因此该类必须是public,而且不是抽象的。

  创建一个Pubic,无参数的构造器

   同样,由于EJB容器必须创建bean的实例。假如构造器是protected或者private,容器就不能创建实例。

  不要实现finalize方法

   虽然你很少需要定义一个finalize方法,不过EJB规范中还是明文禁止在session和entity bean中定义finalize方法。假如你的bean需要做任何清除的操作,它们应该在ejbRemove或者ejbPassivate方法中进行。

  实现create方法和所有的remote方法

  一个session bean必须实现Home接口中指定的全部create方法,以及Remote接口中指定的全部方法。在实现这些方法时,有一些额外的要求:

  . 这些方法必须是public,而不能是static或者final

  . 参数和返回的类型必须是有效的RMI/IIOP返回类型。在通常的情况下,这意味着必须是原有的类型(int, char, double等),可串行化的对象或者Remote接口。

  . 方法名不能以ejb开头(这将令EJB的配置工具感到迷惑,并且可能带来冲突)

  可选择的实现Remote接口

  对于一个bean可以实现Remote接口,这个特性也是挺重要的。在实现类中,其中的方法签名必须和Reomote接口中的一样,除了一点,就是实现类中的方法并不抛出RemoteException。也就是说,虽然对于Remote接口的每个方法,在实现类中都必须要有相应的方法对应,而且不需要作如下的声明:

  public class ShoppingCartImpl implements SessionBean, ShoppingCart

  实现Remote接口的原因是:在漏掉一个方法时编译器将会告诉你,也就是说,假如没有实现Remote接口中的一个方法,编译器将会产生一个错误。否则,你将不知道漏掉了一个方法,直到你运行一个配置工具或者是打包工具为止。越迟发现错误,就要花越长的时间来改正它。

  在实现Remote接口时,可能会碰到的问题是使用this要害字来传送对象,而不是使用session context中的getEJBObject方法。通常,当使用this而不是getEJBObject时,编译器将会产生一个错误,因为它期待一个实现Remote接口的对象,而实现类却这样做。通过实现Remote接口,你通过了编译,但是你在运行时又碰到了错误,这是由于与EJB容器期待的不同,实现类并不是一个到Remote接口的正确引用。

  提示

  虽然实现Remote接口可以指出在编译时的错误,但是这样也会导致出现一些直到运行时才会发现的错误,令修改起来很费时间。所以你最好不要实现Remote接口,而在配置时发现一些错误。进入讨论组讨论。

  实现SessionSynchronization接口

  SessionSynchronization接口可以令一个session bean更好地控制一个事务是如何发生。

  在必要时扩展其它类

  你的实现类也可以是其它类的子类。实际上,该超类也可以是另一类bean的实现类。

  在必要时实现Helper方法

  一个实现类可能还有额外的helper方法,这些方法并不是Remote或者Home接口的一部分。对于这些方法的参数类型、返回值类型和可见性(public, protected, private)是没有限制的。

  不要抛出RemoteException

  假如需要抛出一个和EJB有关的异常,抛出javax.ejb.EJBException代替。

  Remote和Home接口的限制

  除了对实现类有限制外,对于Remote和Home接口也有一些限制。这些限制大部分和实现类类似。

  Remote接口必须扩展javax.ejb.EJBObject

  当你使用一些配置工具时,例如WebLogic提供的工具,你将会发现它会自动知道哪个类包含有Remote接口。它寻找EJBObject接口来检测到Remote接口。还有EJBObject接口包含有每个EJB都必须实现的一些方法。

  Home接口必须扩展javax.ejb.EJBHome

  和Remote接口必须扩展EJBObject一样,EJBHome接口帮助标识Home接口,并且定义了一些你可以在每个Home接口上调用的方法。

  参数和返回类型必须符合RMI/IIOP

  这意味着它们必须是原始类型、可串行化对象或者Remote接口。

  所有的方法必须抛出java.rmi.RemoteException

  由于Home和Remote接口扩展java.rmi.Remote接口,所以接口的全部方法都必须抛出java.rmi.RemoteException。RMI规范明确规定在Remote接口的所有方法都必须抛出RemoteException。

  所有的方法都必须有相应的实现

  在一个典型的RMI实现中,这一点是毫无疑问的,这是由于实现类将会实现Remote接口。但是对于EJB,由于实现类并不需要实现Home和Remote接口,对于实现类和Home及Remote接口的关系,编译器并没有一个强制的规定。

  对于Home接口的每个create方法,在实现类中都必须有一个相应的ejbCreate方法。还有,create方法抛出CreateException。

  扩展其它的接口

  要支持Enterprise JavaBeans的子类,Home和Remote接口可以扩展其它的接口,只要父接口是扩展EJBObject(对于Remote接口)或者EJBHome(对于Home接口)。进入讨论组讨论。
上一篇:JSF的中文化与国际化的简便方法 人气:666
下一篇:JSWDK环境安装与配置 人气:836
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐