1

嗨,大家好:我已經非常廣泛地使用了JSP/Servlet框架,通常在必要時選擇Java EE技巧(例如,當我的數據訪問代碼變得複雜時,我通常採用Ibatis/Hibernate;或者當我的UI變得很難看時,我開始使用像guice/spring DI這樣的工具來簡化測試)....但是,我從來沒有在「完整的」Java EE堆棧中看到這一點 - 通常大多數應用程序只需要一個或兩個典型的Java EE特徵。與MVC Servlet/JSP應用程序相比,Java EE應用程序如何擴展?

我的問題是:完整的Java EE容器有什麼好處?在我的經驗中,似乎在日常測試/構建週期的環境中運行標準的tomcat服務器,依賴管理器能夠非常有效地管理複雜性。

我的想法:

1)可能的Java EE棧比如GlassFish/JBOSS是更具可擴展性(即,它們可以很容易地擴展到處理與突擊編碼或即席優化放量)?

2)有可能的Java EE堆棧是多個模塊化(即,它們可以與用專爲不同的上下文中的其他Java EE組件通信?)

3)有可能的Java EE棧允許不同的特徵之間的無縫互操作(例如,也許JMS與JPA數據操作乾淨地互操作,這樣就不必「手動」將不同的系統組件粘合在一起...)?

對這些建議的任何想法,將不勝感激......我對重量級Java EE框架有點新,並試圖將它們的用途置於簡單的本土mvc代碼庫上。

+0

來自「名牌」供應商和管理界面的可購買支持,操作人員不會抱怨(儘可能多),forsrs。 – Affe

+0

有趣的是,在所有我多年的經驗中,當事情變得複雜時,我們通常會開始**剔除** hibernate和spring,以及不認真的事情,我認爲您還沒有完成複雜曲線的那一面。 –

+0

我不認爲Hibernate是值得的,但我從來沒有剔除過Spring。有什麼選擇 - 寫你自己的?瘋。 – duffymo

回答

3

但是,我從來沒有見過點「滿」的Java EE棧---通常大多數應用程序只需要一個或兩個典型的Java EE功能。

這是什麼原因不是使用Java EE容器?

你沒有提到的一件事是聲明式事務,你絕對需要這些事情。 Spring也可以做到這一點,但是從我聽到的情況來看,分佈式事務需要一些額外的工作。

這引出了用於聚類的話題,EJB容器根據標準內置了這個話題。如果您需要服務級別的可伸縮性,那麼如果您在Java EE服務器上運行,則只需要很少的工作。如果你使用Spring,有一些第三方解決方案,但不是標準。所有其他的API都是JAVA EE的一部分--JMS(消息傳遞),Java Mail,JAX-B(XML綁定),JAX-WS(SOAP Web服務),JAX-RS(REST Web服務) 。如果您使用的是Java EE服務器,那麼您可以確保它已經實現了所有這些服務器,並且可以在需要時集成它們。當然,也可以將它們分別整合到基於Spring或本地的解決方案中,但我認爲你更可能遇到集成問題或只是簡單地產生混亂。

1

首先,它是「Java EE」。 「J2EE」是1999年的術語。

其次,servlet和JSP Java EE。他們是一個子集。

我假設「完全成熟」指的EJB(實體,會話和消息驅動),JMS等

我認爲,直到EJB 3走過了完全成熟的堆棧是責任。這就是爲什麼像Spring這樣的框架應運而生的原因。 Rod Johnson寫道,因爲他注意到他的Java諮詢演示需要比EJB更好,更簡單的東西。春天幫助他增加收入;現在它幫助我們所有人。

我是一名春天的倡導者。我沒有使用過EJB,因爲我沒有必要。

4

這是一個相當開放的問題。他們的規模很好。他們是更多可擴展?比什麼更具擴展性?比什麼更模塊化?

本土解決方案很少是一個長期的解決方案(或者至少是一個好的解決方案)。大多數EE功能可以使用現有的庫/框架/服務器複製,但通常比使用現有的EE容器更有效 - 但它也可能(a)足夠,和/或(b)更好。

現代Java EE非常漂亮。它對Spring確定的挑戰做出了反應,現在是比以前更現實的選擇。是的選擇嗎?取決於應用程序,內部技能,您可以/想要支持的基礎設施類型,您的名稱。