設計目標
客戶反饋系統作為公司與客戶交流的平臺,幾乎為所有的企業所運用,最近,公司讓我負責客戶反饋系統的開發。由于,公司與國外客戶的業務需要,該系統必須實現中,英,日三國語言的切換(國際化要求)。在接到任務之后,我便決定嘗試使用目前開源社區比較流行的Apache Beehive(蜂巢)和下一代EJB,EJB3.0等技術來實現這個系統。

開發環境
選擇平臺,開發工具
為了支持EJB3.0和Beehive,我們選擇JBoss4.0.3應用服務器作為運行平臺,它也是目前唯一提供EJB3.0容器的應用服務器。
下載和安裝JBoss4.0.3服務器及EJB3.0容器http://www.jboss.com/downloads/index
數據庫選用 MySQL5.0,由于我們沒有針對特定數據庫編碼,因此數據庫的移植也是非常方便的。
下載MySql5.0 http://dev.mysql.com/downloads/mysql/5.0.Html
由于要開發EJB3.0和Beehive應用,選擇Ecllipse這個IDE,
下載Ecllipse SDK 3.1 http://eclipse.org/downloads/
為了支持EJB3.0的開發,下載Jboss Ecllipse IDE這個Ecllipse插件
http://www.jboss.com/PRodUCts/jbosside/downloads
Pollinate是另一個Ecllipse插件,它也是目前唯一支持Beehive項目開發的IDE,雖然它遠不及WebLogic 的 Workshop 如此強大,但在擁有一定BEA Workshop 開發經驗的前提下,使用pollinate并不會有太大的問題。
下載并安裝Pollinate插件 http://www.eclipse.org/pollinate/
Beehive簡介
在系統設計之前,選擇一個優秀的系統框架是非常重要的。Beehive是Apahce的開放源代碼項目。自2004年5月份,BEA系統公司公布將WebLogic Platform中一系列居于核心地位的運行時框架(Runtime Framework)開放源代碼并貢獻給Apache項目后,這個Beehive的框架就一直成為開源社區關注的焦點之一。
Beehive的目標是使J2EE開發更加簡單,它是一個可擴展的java應用程序框架,該框架具有針對Web服務,Web應用程序和資源訪問的集成元數據驅動的編程模型。該框架利用了JDK1.5的最新創新,非凡是JSR175元數據注解,可以減少開發人員的編碼,從而提高開發效率。目前,Beehive項目包括Java控件,NetUI,Java Web服務元數據,能夠幫助Java開發人員開發出基于組件和標準的JAVA應用。
EJB3.0簡介
在客戶反饋系統中,嘗試使用最新的EJB3.0來實現持久層的開發。眾所周知,由于EJB的復雜性使其在J2EE架構中的表現一直不是很好。EJB大概是J2EE架構中唯一一個沒有兌現其能夠簡單開發并提高生產力的組件。而EJB3.0規范在這方面作出努力以減輕其開發的復雜性。EJB3.0取消或最小化了很多(以前這些是必須實現)回調方法的實現,并且降低了實體Bean及O/R映射模型的復雜性,從而大大減輕了開發人員進行底層開發的工作量。
EJB3.0中兩個重要的改進分別是:使用了Java5中的元數據注解功能和基于Hibernate的O/R映射模型, 在EJB3.0中,任何類型的企業級Bean只是一個加了適當注釋的簡單Java對象(POJO)。注釋可以用于定義bean的業務接口、O/R映射信息、資源引用信息,效果與在EJB2.1中定義部署描述符和接口是一樣的。在EJB3.0中部署描述符不再是必須的了;home接口也沒有了,你也不必實現業務接口(容器可以為你完成這些事情)。
EJB3.0的配置
JBoss EJB3.0建立在Hibernate 3.0之上。配置數據源,實體bean需要創建hibernate. Properties配置文件。在EJB3.0部署包下有一個默認的hibernate配置文件ejb3.deployer/META-INF/hibernate.properties。修改這個文件,使實體Bean使用MySql數據源,修改后的配置文件如下:
hibernate.transaction.manager_lookup_class=org.hibernate.transaction.JBossTransactionManagerLookup
hibernate.connection.release_mode=after_statement
hibernate.transaction.flush_before_completion=false
hibernate.transaction.auto_close_session=false
hibernate.query.factory_class=org.hibernate.hql.ast.ASTQueryTranslatorFactory
新聞熱點
疑難解答