2009-08-11 67 views
5

使用Java EE(EJB)而不僅僅是簡單的Servlet實現的主要原因是什麼?Java EE與Servlet的優缺點

我正在開發一個新項目,該項目主要是一個必須非常快速和可擴展的Web服務。

對不起有任何困惑,雖然我在Java方面有經驗,但我對Java Web世界非常陌生,可能不會很好地問這個問題。

+1

看到servlet和Web服務如何是J2EE規範的一部分我不是100%確定你在這裏問的是什麼......整個事情聽起來有點像「HTML的額外開銷」會導致我的網站表現明顯下降? – ChssPly76 2009-08-11 21:02:06

+0

相比什麼?有什麼要求?這不是一個非常深思熟慮的問題。 Servlet是J2EE的一部分... – 2009-08-11 21:06:12

+1

這可能不是很好的表達方式,但它確實有效地提出了一個很好的問題。至少有兩種實現Web服務的JEE方法,例如通過有效地使用servlet和作爲可暴露Web服務接口的EJB的POJO。兩者都有優點。 – djna 2009-08-11 21:25:02

回答

6

Servlet是HTTP請求偵聽器;他們無法迴應任何其他事情。

如果你在servlet中嵌入了大量的邏輯,它將不會被任何其他客戶端使用。

在POJO中編寫您的應用程序。在沒有涉及的應用服務器的情況下進行徹底測試然後擔心你想如何打包和部署它。 Servlet的? EJB?網絡服務?還有別的嗎?沒問題 - 這只是打包和部署問題。獲得你想要在POJO中正確工作的行爲。

春天可以給你很多選擇。我會推薦它。

+0

現在的EJB幾乎都是POJO,POJO +一些註釋,它們可以包含RMI和Web Service接口。使用諸如Spring(或EJB 3 ;-)之類的東西是很好的建議。 – djna 2009-08-12 07:21:21

+1

對EJB3是真的。開放式EJB使得可以在沒有WebLogic或WebSphere的情況下運行它們,但我仍然更喜歡Spring。 – duffymo 2009-08-12 13:12:01

+0

謝謝,我喜歡你剛剛開始使用POJO的建議,然後擔心Web服務器軟件包。這聽起來像是一個偉大的計劃,聽到爲不同容器包裝它並不是太痛苦。 – 2009-08-12 17:48:34

2

Web服務是無狀態的嗎?如果是這樣,我不認爲在使用像Tomcat或Jetty這樣輕量級的東西時可以使用完整的Java EE服務器。您可以使用其中任何一種部署一個jax-ws實現,並且非常容易地執行您所需要的操作。如果涉及到某種狀態,並且最終希望跨多臺機器共享,那麼Java EE就可以派上用場了。

這樣說,我不認爲Java EE會降低性能。應用服務器通常需要更長的時間來啓動,並且需要更多的努力來管理,但是一旦它們啓動並運行,性能應該是類似的。

+1

我同意JEE應用程序服務器將很好地集羣解決方案,但這不是使用它們的唯一原因。通常,Web服務應該是無狀態的(或非對話式的),因此有狀態並不是使用JEE的常見驅動因素。我認爲我們將方法級別的安全性和非平凡的事務性需求看作是實現完整JEE EJB解決方案的更強有力的驅動因素 – djna 2009-08-11 21:48:18

+1

>「應用服務器通常需要更長的時間才能啓動」 - 快進3年,現在應用服務器需要大約開機。 JBoss AS 7,GlassFish V3,TomEE和Resin都是第二或第二。即使WebLogic現在也只有幾秒鐘;) – 2012-11-28 12:55:51

1

如果您的Web服務可能需要任何程度的「企業」功能,如每個方法的安全性或事務使用EJB。

對於EJB 3,這實際上並不是非常困難,幾個註釋就完成了。

否則在servlet後面的簡單POJO就足夠了。

+0

「...如果Web服務可能需要任何程度的」企業「功能,例如每個方法的安全性或事務使用EJB ......」 - 如果不是真的,你正在使用Spring。沒有EJB,你可以做這些事情和更多。 – duffymo 2009-08-11 22:40:20

+0

是的,你對春天是對的。您是否同意在技術上我們可以使用開箱即用的JEE,POJO,servlet來完成Web服務 - 但是對於一些要求,我們將從Spring中受益?諸如每個方法的安全性和事務處理會是兩個這樣的需求嗎? – djna 2009-08-12 05:56:48

6

EJB的規範1.x和2.x增加了複雜性,因爲大多數webapps是不需要的。由於這種複雜性,新框架似乎簡化了開發和運行時架構(Hibernate/Spring /其他微容器/其他ORM框架)。

EJB的3.x與這種更改(通過JDO和JPA)匹配,現在,使用帶有這些增強框架的Servlet或具有EJB 3 +的Java EE可以獲得基本相同的結果。

使用Java EE應用服務器會爲您增加許多管理優勢(用於管理池,日誌,監控,事務處理等的GUI)無需使用它們,您可能會得到相同的結果,但您必須全部(編輯配置文件)這看起來似乎沒有太多問題,但是如果你打算爲你的web應用程序安裝一個管理員,最好使用這個服務器開箱即用的管理工具。

+0

謝謝奧斯卡,那是關於行政優勢的很好的建議。 – 2009-08-11 21:42:25