EJB初学者问与答

1、EJB2.0有哪些内容?分别用在什么场合? EJB2.0和EJB1.1的区别?

答:规范内容包括Bean提供者,应用程序装配者,EJB容器,EJB配置工具,EJB服务提供者,系统管理员。这里面,EJB容器是EJB之所以能够运行的核心。EJB容器管理着EJB的创建,撤消,激活,去活,与数据库的连接等等重要的核心工作。JSP,Servlet,EJB,JNDI,JDBC,JMS.....

2、EJB与JAVA BEAN的区别?

答:Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。

3、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。

答:EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技术实现。

SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。EntityBean被用来代表应用系统中用到的数据。

对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。

对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。

Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的 Stateful Session Bean 的实体。Stateless Session Bean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫 Stateless Session Bean 的时候,EJB Container 并不会找寻特定的 Stateless Session Bean 的实体来执行这个 method。换言之,很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行。从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态。

4、EJB与JAVA BEAN的区别?

答:Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。

EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?

SessionBean:Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个Bean的实例时,EJB容器不一定要创建一个新的Bean的实例供客户机调用,而是随便找一个现有的实例提供给客户机。当客户机第一次调用一个Stateful Session Bean 时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例。

EntityBean:Entity Beans能存活相对较长的时间,并且状态是持续的。只要数据库中的数据存在,Entity beans就一直存活。而不是按照应用程序或者服务进程来说的。即使EJB容器崩溃了,Entity beans也是存活的。Entity Beans生命周期能够被容器或者 Beans自己管理。

EJB通过以下技术管理实务:对象管理组织(OMG)的对象实务服务(OTS),Sun Microsystems的Transaction Service(JTS)、Java Transaction API(JTA),开发组(X/Open)的XA接口。

5、EJB的角色和三个对象

答:一个完整的基于EJB的分布式计算结构由六个角色组成,这六个角色可以由不同的开发商提供,每个角色所作的工作必须遵循Sun公司提供的EJB规范,以保证彼此之间的兼容性。这六个角色分别是EJB组件开发者(Enterprise Bean Provider) 、应用组合者(Application Assembler)、部署者(Deployer)、EJB 服务器提供者(EJB Server Provider)、EJB 容器提供者(EJB Container Provider)、系统管理员(System Administrator)

三个对象是Remote(Local)接口、Home(LocalHome)接口,Bean类

时间: 2024-11-18 18:45:20

EJB初学者问与答的相关文章

Win7一问一答 如何只保留一个窗口而其他最小化?

Win7一问一答系列文章专门解答有关Win7的疑难问题,小到Win7主题.Win7桌面的应用文章,大到购买Win7.Win7安装等的长篇大论文章.力求用最简洁的语言回答初学者提出的问题,希望网友看到之后能举一反三解决问题.本期给大家介绍"鼠标抖一抖,窗口最小化" . 问题描述:有些网友说,有时候打开了很多的窗口,想从桌面找点东西,但是又被重重的窗口给挡住了.例如,用QQ跟好友聊天的时候,想把桌面的一张照片发给好友,这就要把窗口一个一个的最小化,或者一次把所有的窗口全部最小化,然后再找回

【一问一答】错题库整理

此文章不断更新从 "一问一答"上遇到的做错的题目,持续更新 No.1   by 17th Sep 2013 以下代码的输出结果 #include <iostream> using namespace std; int compare(char *a, char *b){ if((strlen(a)-strlen(b))>=0) return 1; else return 0; } int main(){ cout<<compare("ab&quo

探索式测试的问与答(2)

接探索式测试的问与答(1) 既然学习非常重要,那么如何才能高效地学习呢?软件专家Andrew Hunt指出:"一种高效的学习环境应该允许你安全地做三件事情:探索.创造和应用."Andrew的解释如下: 探索就是在陌生的环境中玩(Play).你需要自由地探索才能学习.我们不仅仅接受信息,而是亲自探索和构建思维模型.玩引入了一种新奇的感觉,也就是 乐趣.用一种好玩的方式学习新资料或者解决问题,可以让这个过程变得更让人享受,也让学习变得更容易.为了更好地学习,请更好地玩. 你需要自由地创造-

《21天学通C++(第7版)》——17.6 问与答

17.6 问与答 21天学通C++(第7版) **问:vector会改变其存储的元素的顺序吗? 答:**vector是一种顺序容器,元素的存储顺序与插入顺序相同. **问:要将元素插入到vector中,应使用哪个函数?元素将插入到vector的什么位置? 答:**成员函数push_back将元素插入到vector末尾. **问:哪个函数用于获悉存储在vector中的元素个数? 答:**成员函数size ()返回存储在vector中的元素个数.对于所有STL容器,该函数都如此. 问:随着vecto

java小问题-初学者问个关于java的小问题

问题描述 初学者问个关于java的小问题 char c = str.charAt(i); 这个语句是什么意思???求解答(谢谢!!) 解决方案 声明一个char型变量c,它的值是str的第i个位置的字符 解决方案二: 字符型c等于 str字符串的第i个元素 解决方案三: java小问题java中的小问题java 小问题 解决方案四: 同意楼上解答.这些都是非常非常基础的JAVA知识. 解决方案五: 声明一个char型变量c,它的值是str字符串的第i个位置的字符. 至于你说的,"不应该是Stri

《C++游戏编程入门(第4版)》——2.14 问与答

2.14 问与答 C++游戏编程入门(第4版) 问:必须使用关键字true和false吗? 答:不一定,但最好这样做.在有关键字true和false之前,程序员经常使用1代表true,0代表false.然而,既然有了true和false,最好使用它们而不是过时的1和0. 问:可以将true或false以外的值赋给bool型变量吗? 答:可以.可以将表达式赋给bool型变量,变量将存储表达式的真或假. 问:可以使用switch语句对某个非整数值进行验证吗? 答:不可以.switch只能用于可以解释

《HTML5+CSS3网页设计入门必读》——1.12 问与答

1.12 问与答 问:我查看了Internet上的一些Web页面的HTML源代码,它们看上去极难学习.我必须像一名计算机程序员那样思考,才能够学习这种材料吗? 答:尽管复杂的HTML页面看上去可能的确令人畏缩不前,但是学习HTML比学习实际的程序设计语言(比如C++或Java)要容易得多.HTML是一种标记语言,而不是程序设计语言.使用它标记文本,以便浏览器可以以某种方式呈现文本.与开发计算机程序相比,这是一组完全不同的思考过程.你实际上不需要任何作为计算机程序员的经验或技能,就能成为一名成功的

指针-初学者问一个关于c语言结构体的问题

问题描述 初学者问一个关于c语言结构体的问题 结构体中指针和数组有什么不同? 我定义了这么一个结构体: struct word { char*word1; int line[1000]; }; struct word danci 然后用一个函数getword读取输入并给该结构体赋值,具体是怎么样就不写了 getword(danci,100); 然后 printf("%d",danci.line[0]); 但是这句报错了,原因是struct word danci没有初始化 但是我把结构体

《HTML与CSS入门经典(第8版)》——2.7 问与答

2.7 问与答 问:你建议的所有测试将比创建我的页面花的时间还多!我不能测试得少一些吗? 答:如果你的页面不是用来赚钱或者提供重要的服务,那么对一些用户来说它们看上去很滑稽,或者偶尔出点错误可能不是大事.在那种情况下,只要用两种不同的浏览器测试各个页面就可以收工了.但是,如果你需要建立一种专业的形象,严密的测试是不可替代的. 问:说真的,谁关心我如何组织Web内容呢? 答:不管你信不信,Web内容的组织对搜索引擎和网站的潜在访问者是很重要的--你将在第24章中学到更多这方面的知识.但是总的来说,