EJB初学者常见的12个困惑问与答

转载 2016年08月29日 16:11:35

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類

6、EJB容器提供的服務

答:主要提供聲明周期管理、代碼產生、持續性管理、安全、事務管理、鎖和併發行管理等服務.

7、EJB規範規定EJB中禁止的操作有哪些?

答:1.不能操作線程和線程API(線程API指非線程對象的方法如notify,wait等),2.不能操作awt,3.不能實現伺服器功能,4.不能對靜態屬生存取,5.不能使用IO操作直接存取文件系統,6.不能載入本地庫.,7.不能將this作為變數和返回,8.不能循環調用.

8、remote介面和home介面主要作用

答:remote介面定義了業務方法,用於EJB客戶端調用業務方法.

home介面是EJB工廠用於創建和移除查找EJB實例

9、bean 實例的生命周期

答:對於Stateless Session Bean、Entity Bean、Message Driven Bean一般存在緩衝池管理,而對於Entity Bean和Statefull Session Bean存在Cache管理,通常包含創建實例,設置上下文、創建EJB Object(create)、業務方法調用、remove等過程,對於存在緩衝池管理的Bean,在create之後實例並不從內存清除,而是採用緩衝池調度機制不斷重用實例,而對於存在Cache管理的Bean則通過激活和去激活機制保持Bean的狀態並限制內存中實例數量.

10、EJB的激活機制

答:以Stateful Session Bean 為例:其Cache大小決定了內存中可以同時存在的Bean實例的數量,根據MRU或NRU演算法,實例在激活和去激活狀態之間遷移,激活機制是當客戶端調用某個EJB實例業務方法時,如果對應EJB Object發現自己沒有綁定對應的Bean實例則從其去激活Bean存儲中(通過序列化機制存儲實例)回復(激活)此實例.狀態變遷前會調用對應的ejbActive和ejbPassivate方法.

11、EJB的幾種類型

答:會話(Session)Bean ,實體(Entity)Bean 消息驅動的(Message Driven)Bean

會話Bean又可分為有狀態(Stateful)和無狀態(Stateless)兩種

實體Bean可分為Bean管理的持續性(BMP)和容器管理的持續性(CMP)兩種

12、客服端調用EJB對象的幾個基本步驟

答:設置JNDI服務工廠以及JNDI服務地址系統屬性,查找Home介面,從Home介面調用Create方法創建Remote介面,通過Remote介面調用其業務方法.


相关文章推荐

面试困惑问与答(3)——题目没弄懂,可以问面试官吗?

问:面试的时候,面试官突然冒出一个之前没有听过的概念,请问我可以问面试官让他把题目说清楚吗?如果问的话他会不会觉得我很傻? 答:面试和笔试最大的区别是:面试是一个注重沟通交流的过程,而且沟通是双向的...

面试困惑问与答(4)——最后该问什么?

问:每次面试的时候,面试官都会问我有没有什么问题要问他。我可以问什么问题呢? 答:面试官让应聘者问问题,主要是想了解应聘者最关心的问题有哪些。因此,首先至少要问一两个问题。不然面试官就会觉得你对我们...

(转) 面试困惑问与答——感觉挺好,为啥被拒了?

问:技术面试的时候,题目挺简单的,我觉得自己都做出来了。可最后怎么还是被拒了啊?答:面试被拒有很多种可能,比如面试官认为你性格不适合、态度不够诚恳等等。但在技术面试过程中,这些都不是最重要的。技术面试...

面试困惑问与答(1)——“为什么跳槽”

问:每次跳槽的时候,面试官都会问“为什么想跳槽”。请问这个问题该怎么回答? 答:每个人都有自己的跳槽动机和原因,因此面试官也不会期待一个标准答案。面试官只是想通过这个问题来了解应聘者的性格。因此应聘...

面试困惑问与答(2)——感觉挺好,为啥被拒了?

问:技术面试的时候,题目挺简单的,我觉得自己都做出来了。可最后怎么还是被拒了啊? 答:面试被拒有很多种可能,比如面试官认为你性格不适合、态度不够诚恳等等。但在技术面试过程中,这些都不是最重要的。技术...

C++ 常见问题问与答.rar

  • 2013-02-06 19:31
  • 133KB
  • 下载

C++常见问题问与答

  • 2010-05-11 08:35
  • 133KB
  • 下载

有关坐标系常见问题的问与答

原文链接:http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=121932

C++ 常见问题问与答.rar

  • 2010-02-22 08:38
  • 133KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)