2013-02-22 27 views
0

我們目前正在爲大學開發一個Web應用程序,我們希望有更有經驗的開發人員提供一些建議。我們應該使用ApacheCXF還是EJB來傳遞邏輯和Web模塊?

我們有一個使用Hibernate在MySQL數據庫上運行的後端。另一個項目是使用由後端提供的API的Web UI(註冊用戶,獲取與某些配置文件關聯的數據等)。我們使用JSF框架(RichFaces)作爲用戶界面。一切都是使用Maven構建的。

我們無法決定的技術是用於UI和邏輯模塊之間的通信。第一種選擇是使用ApacheCXF來提供UI可以作爲客戶端的SOAP Web服務。第二種選擇是使用EJB從UI模塊調用後端方法。

什麼方法更廣泛使用?就我們在​​Web上閱讀的內容而言,使用EJB比SOAP webservices更快。另一方面,我們對使用Tomcat的EJB沒有任何經驗(我們更喜歡使用Tomcat,因爲它似乎是一個更便宜的選項,但是我們不知道爲了在Tomcat中使用EJB而必須做什麼)。此外,從一開始就使用web服務將允許我們添加對不同平臺(例如Android)的支持。

我們正在討論的另一個方面是應該如何部署應用程序。我們現在考慮的替代方案是:

  1. 將其部署爲單個WAR項目(這將解決我們關於將UI與應用程序的後端進行通信的問題)。
  2. 使用webservices將兩個WAR項目部署到同一個服務器中,以便在項目之間進行通信。 (我們有一個使用Tomcat服務器部署的這種方法的原型)
  3. 部署一個WAR項目和EJB項目。
  4. 部署一個EAR項目,該項目將包含對WAR和EJB項目的引用。 (我們有一個使用這種方法在Glassfish服務器上部署的原型)

該項目現在開始,所以我們現在只能處理幾百個用戶。但是,如果項目成功,我們需要處理幾百萬用戶。

任何意見,將不勝感激。謝謝。

編輯:那麼關於如何部署項目的任何意見?是否有必要使用EAR?如果我們將項目部署爲EAR模塊,是否有優勢?

編輯2:我們發現我們需要在此線程的建議:我們使用ApacheCXF工作Deploying java applications (Tomcat/Glassfish)

回答

0

第一件事是第一件事。如果沒有必要,我會避免使用Web服務。如果你覺得你可能需要從外部程序和平臺調用這個系統,那就去做吧。即使那樣,我也只能使用Web服務接口進行外部集成,並且仍然有一個內部的EJB實現。

EJB對企業應用程序來說非常棒。我強烈建議你看看。它們提供對EJB Pooling,事務,面向Aspect的編程,安全性,有狀態會話,Java消息傳遞,JNDI等的支持,並且可以直接在受管Bean(JSF)中注入它們。你說你最終會處理數百萬用戶,所以我認爲你會希望你的應用程序運行得儘可能快,我認爲SOAP Web服務不太適合。請記住,SOAP Web服務將消息編碼爲文本,因此如果您的應用程序將發送二進制文件等,那麼您將遇到顯着的性能問題。

就部署而言,我會使用EAR或JSF和EAR後端的WAR。您可以使用注入從多個Web應用程序和其他EAR應用程序中拉出您需要的類,甚至是遠程的類。

我不確定你說爲什麼Tomcat是便宜。 Glassfish開源版本是一個功能齊全的JavaEE6服務器,並且免費。 JBoss也符合JavaEE標準並且免費。它們都被用在很多生產環境中。我發現玻璃魚更加用戶友好,並且會推薦它給EJB noobs :)

我也開始使用Tomcat,但現在我根本不使用它。爲什麼只能使用servlet容器,何時可以擁有整個shabang?希望這可以幫助。

+0

我們正在討論獲取託管服務或雲服務來部署我們的應用程序的成本。另一位用戶從stackoverflow讀取另一個線程,如果您需要glassfish服務器,建議使用Jelastic。瀏覽定價部分後,似乎有一個glassfish服務器將消耗更多的資源(因此更昂貴)。 – user2100776 2013-02-24 21:45:05

+0

你必須明白,tomcat只是一個servlet容器。我確信那裏有一些tomcat頑固分子,但我會懷疑在開發環境之外使用tomcat。默認情況下,tomcat可能看起來更輕,但是當您開始部署大型EJB樣式應用程序時會發生什麼?可能沒有看起來那麼快。你可以使用Spring框架,它提供了javaee的所有功能,但它只是將大量的jar複製到Glassfish默認提供的tomcat中。 – greenkode 2013-02-25 08:54:05

0

其具有SOAP和REST風格。可靠和相對容易設置。我不知道你爲什麼要使用glassfish,也許它是首選項,但你也可以在eclipse中實現你的項目。這確實取決於你和你的團隊以及你的團隊可能需要建立和支持的需求和技能集,一個CXF Web服務+ apache + eclipse或許有兩個war文件將是一條好路徑。

0

在這種情況下,我不會使用Web服務。您可以使用託管的bean作爲控制器。 將邏輯放入EJB中,查看豐富的面孔並使用託管bean控制流。

如果您使用maven,您可以生成一個EAR結構的項目(war for web module和jar for ejbs)。我不記得一個原型的名字,但你可以很容易地找到它。

相關問題