1. EJB底层采用RMI(Remote Method Invocation)技术
2. 客户在桩(stub)上调用远程对象方法,服务器解析发自桩调用的对象称为骨架(skeleton),桩和骨架的实现不必关心
3. 所有的远程方法必须声明java.rmi.RemoteException异常,因为网络随时可能瘫痪
4. java.rmi.RemoteException为受查异常,客户必须处理或声明这个异常
5. RMI可传递对象类型必须为基本类型,Serializable对象,由基本类型或Serializable对象组成的数组或集合,Remote对象其中的一种
6. 通过一个远程方法传递远程对象时,Java实际上发送的是这个远程对象的桩
7. 对于远程调用,Java按对象副本来传递对象,而不是按引用副本来传递
8. 不要指望Map集合的values()方法返回的Collection一定是Serializable。应该把值放在你相信肯定是Serializable的集合中,比如ArrayList,然后才能把他们作为远程方法调用的一部分进行传递
9. 远程客户是指在另外一个JVM中运行的对象
10. 远程对象和桩必须都实现同样的接口。这个接口包括了客户想调用的方法。
11. 远程接口必须满足(1)必须扩展java.rmi.RemoteException(2)每个方法必须都声明java.rmi.RemoteException(3)参数和返回类型必须都是可传递的
12. 远程对象不是bean,它是bean的保镖—EJBObject
13. EJBObject负责安全,事务以及持久存储
14. EJBObject是由容器来创建,组件接口是一个扩展了EJBObject的接口
15. 你负责创建(组件接口,bean类,Home接口),容器负责(EJBObject类,EJBObject桩类,Home类,Home桩类)
16. 每个Session Bean和 Entity Bean都有一个Home
17. JMS Bean没有home,没有客户视图
18. Home是bean的工厂,负责分发Bean组件接口的引用,一个Bean对应一个Home,Bean的实例化个数与Home的实例化个数无关,实例化的Home永远只有一个
19. 客户通过Home的create()方法创建一个Bean的引用(实际是EJBObject的引用)
20. Session Bean,客户可以共享Home,但不能共享Bean
21. Entity Bean,客户可以共享Home,而且可以共享Bean
22. Bean在调用其方法时候才会由EJBObject创建,一般都呆在Bean池里