Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16496091
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 21:38:11

下载本文示例代码
  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接口,而在配置时发现一些错误。共2页。 1 2 :   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接口,而在配置时发现一些错误。共2页。 1 2 : 下载本文示例代码


循速渐进学用Session Bean(四)循速渐进学用Session Bean(四)循速渐进学用Session Bean(四)循速渐进学用Session Bean(四)循速渐进学用Session Bean(四)循速渐进学用Session Bean(四)循速渐进学用Session Bean(四)循速渐进学用Session Bean(四)循速渐进学用Session Bean(四)循速渐进学用Session Bean(四)循速渐进学用Session Bean(四)循速渐进学用Session Bean(四)循速渐进学用Session Bean(四)循速渐进学用Session Bean(四)循速渐进学用Session Bean(四)
阅读(189) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~