实现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接口)。进入讨论组讨论。