Java EE的規範定義了三大元件讓我們可以輕鬆實踐MVC架構的應用程式,其中Servlet扮演Controller的角色,JSP扮演View的角色,EJB扮演Model的角色。儘管在企業端應用程式的開發上,EJB元件可以讓我們建立一套健全的商業邏輯體系,然而在Java EE 5.0之前,EJB元件從開發、打包、部署到用戶端的呼叫,都存在諸多的不便性,以開發一個Stateless Session Bean為例,我們需要:
- 撰寫一個類別實作SessionBean
- 撰寫一個Home interface繼承 EJBHome
- 撰寫一個Component interface繼承EJBObject
- 撰寫EJB專屬的DD檔(ejb-jar.xml)描述EJB的結構
- 將EJB打包成Jar檔
- 開發Web元件呼叫EJB(透過JNDI查詢)
- 在Web專屬的DD檔(web.xml)宣告參考的EJB名稱
- 將Web打包成war檔
- 將EJB及Web模組打包成ear檔
- 註冊EJB元件的JNDI名稱
- 在Vendor DD檔將參考的EJB名稱對應到註冊的JNDI名稱
- 部署ear檔
我的天阿!要撰寫、部署及呼叫一個EJB元件還真是辛苦呀!為了徹底改善及簡化EJB開發的體質,Java EE從5.0開始廢除了Home interface、引進@Annotation來簡化DD檔的設定、藉由@EJB進行Dependency Injection來簡化用戶端的存取。從此之後,EJB的開發跟用戶端呼叫終於有了大幅度的改善:
- 撰寫一個Component interface
- 撰寫一個EJB元件實作Component interface
- 藉由@Annotation定義EJB元件的類型
- 將EJB打包成Jar檔
- 開發Web元件呼叫EJB(透過@EJB進行Dependency Injection)
- 將Web打包成war檔
- 將EJB及Web模組打包成ear檔
- 部署ear檔
Java EE 5.0在EJB元件的開發跟用戶端存取上確實簡化了不少,但EJB元件的打包步驟還是麻煩,jar、war、ear的打包仍然少不了。於是Java EE 6.0引進了Web Profile規格,EJB元件可以不需要定義interface(No interface EJB),EJB元件可以不需要單獨打包,可以直接在Web應用程式開發EJB元件,這麼一來,EJB元件從開發、打包、部署到用戶端的呼叫通通給他大刀破釜的簡化成:
- 撰寫一個No interface的EJB元件
- 撰寫一個Servlet存取EJB
- 將Web打包成war檔
- 部署war檔
是不是很神奇呢?EJB元件的開發竟然可以簡化到這樣的地步,以後開發高品質的Java EE應用程式不再是件苦差事了。
您可在下列課程中了解更多Java EE 6.0最新的程式開發技巧喔!
|