【答案解析】EJB是基于Java的远程方法调用(Remote Method Invoeation,RMI)技术,可以被远程访问(跨进程、跨计算机),但它必须被部署在Webspere、WebLogic等容器中。EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。
Java Bean是可复用的组件,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器(例如Tomcat)所创建的,因此Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件,是不能被跨进程访问的。
EJB与JavaBean都是基于Java语言的构件模型。在开发应用时,既可以选择使用EJB模型,也可以选择使用JavaBean模型。尽管如此,二者也并非完全通用,其主要区别见表。
|
EJB与JavaBean对比
|
|
EJB
|
JavaBean
|
|
主要用在服务器端的开发
|
主要用在客户端的开发
|
|
可以作为独立的单元被部署到EJB容器中
|
不可部署
|
|
支持使用部署描述符对EJB应用进行定制化
|
定制化只能在开发阶段
|
|
EJB构件分布式对象,可以被远程的对象访问
|
JavaBean构件不是分布式对象,只能在应用程序内部被访问
|
|
EJB构件对终端用户不可见
|
部分JavaBean对终端用户可见
|