EJB菜鳥入門三板斧:) (轉)

worldblog發表於2007-12-09
EJB菜鳥入門三板斧:) (轉)[@more@]

一板斧:
  緩衝池和活化,鈍化有什麼區別?
  答:根本沒有聯絡,緩衝池是無狀態session bean和entity bean
  為了減少使用,在記憶體中使用例項池,當客戶端用hone介面
  生成一時,就把一個例項賦給它,物件被銷燬後,例項再回到
  例項池中。原來是不是會想緩衝池是建在上的?想想虛擬記憶體的
  速度,不會那麼慢吧?:)而活化鈍化是有狀態session bean為了儲存
  它的狀態,把它的狀態寫入到二級儲存中,也就是硬碟了。

二板斧:
  之間是怎麼的呢?
  答:和客戶端呼叫一樣的嘛。先用home介面找到或建立,再用介面
  和ejb物件進行互相訪問。不會吧?同一臺機子還用?沒辦法,看看
  ejb的定義:EJB的結構是開發和基於的分散式商務應用的
  一種元件結構。用EJB結構開發的應用程式是可伸縮的、事務性的、多
  的。這些應用程式可能只需編寫一次,然而可以在支援EJB規
  範的任務平臺上配置。所以這就是為什麼ejb適用於高階應用,
  不過新出的local interface改變了這一點:)

三板斧:
  narrow是什麼東東?
  narrow是rmi/iiop為了相容而加的一個東東。因為corba為了
  相容諸如cobol這樣的語言,而不支援絕對的強制型別轉換。而rmi
  有一些必須要將遠端引用從更通用的型別轉變成更特殊型別的方法。
  corba提供了明確限制引用為特殊型別的方法。x.rmi.portable
  remote.narrow()方法抽象了此方法。僅在ejb home或ejb物件
  的遠端引用不帶特殊Remote介面型別返回時,才需要使用narrow方法。
  這發生在六種情況下:
  1.使用javax.naming.context.lookup()方法獲得EJB home介面。
  object ref=jndicontext.lookup("CabinHome");
  CabinHome home=(Cabinhome)portableremoteobject.narrow(ref
  ,CabinHome.class);
  2.使用javax.ejb.handle.getejbobject()方法獲得EJB物件引用。
  Handle handle=....//get handle
  object ref=handle.getejbobject();
  CabinHome home=(Cabinhome)portableremoteobject.narrow(ref
  ,CabinHome.class);
  3.使用javax.ejb.homehandle.getejbhome()方法獲得ejb home引用。
  Homehandle homehdle=....//get home handle
  EJBhome ref=homehdle.getejbhome();
  CabinHome home=(Cabinhome)portableremoteobject.narrow(ref
  ,CabinHome.class);
  4.使用javax.ejb.ejbmetadata.getejbhome()方法獲得ejb home引用。
  EJBmetadata metadata=homehdle.getejbmetadata();
  ejbhome ref=metadata.getejbhome();
  CabinHome home=(Cabinhome)portableremoteobject.narrow(ref
  ,CabinHome.class);
  5.從一個home介面查詢方法的返回集合中獲得ejb物件引用。
  6.從任何商務物件中返回廣泛的ejb物件。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-990424/,如需轉載,請註明出處,否則將追究法律責任。

相關文章