J2EE應用中常見的反模式

2021-04-01 19:06:15 字數 1356 閱讀 6495

j2ee應用中常見的反模式(anti-patterns) 

j2ee應用中有一些常見的毛病和錯誤的觀念,按照時下流行的說法,叫反模式。稍不注意,我們自己也會犯,所以大概整理一下,乙個是備忘,也是供需要的朋友參考:

1- 無ejb不叫j2ee

ejb一直發展到今天的2.1仍然被廣為詬病,它提供了很多時候我們並不需要的東西,而且我們在很多情況下一旦選用ejb就沒有其他的方式不去使用那些笨重的功能。但是很多所謂範例讓我們有一種錯覺,好像不用ejb就不是j2ee應用。有一些折中的方案是使用session fa?ade模式,entity bean採用bmp + 本地介面,然後提供一層無狀態的session bean,採用遠端和本地介面,這樣的設計模式,我想,多半是出於無奈。如今,甚至我們經常都能看到不使用ejb的言論,炒得很火的spring則為這種完全不用ejb開發j2ee專案提供了實際的、強有力的佐證。

2- 過度分層

j2ee這個規範膚淺的來看,就是為我們定義了很多「層」,然後還有很多分工明確的「角色」,加上j2ee的藍本應用程式就分了很多「層」,以至於大家都覺得j2ee的應用就應該是很多層的,其實不然,需要具體情況具體分析。

3- 頻繁的往返呼叫

ejb的看似簡單造成我們經常忽略可能在使用過程中出現的遠端呼叫,比如有時候為了更新一條記錄,每個欄位都是遠端的去set,大大增加了不必要的開銷,於是我們意識到在呼叫中使用dto是乙個建議遵循的方案。

4- 過度使用有狀態的session bean

一般來講,乙個session bean例項,如果它是有狀態的,那麼它只對某個固定的使用者服務,如果是無狀態的,則可以滿足不同使用者的呼叫。這有點類似(只是有點類似)乙個類的靜態方法和非靜態方法的區別。我們在實際應用中,應該盡量避免使用有狀態的session bean,除非特別必要。我們可以把狀態保留在session bean之外,如web容器的session物件或者我們自定義的類中,而不是完全依賴有狀態的session bean去幫我們做。

5- 過度會話

web容器的session物件是個好東西,用起來也很方便和直截了當,這造成了我們很多人對它的濫用,什麼東西都往裡面放。這有兩個突出的問題,乙個是資源浪費;另乙個,萬一web伺服器崩潰,那些本來需要持久化的資料就丟失了。我們需要考慮好,哪些資料本可以用request的,哪些資料又是需要持久化到資料庫的,等等,不能一味依賴session。

6- 萬能servlet或者萬能jsp

j2ee為我們提供了web層豐富的技術選擇,servlet或者jsp都只是其中一種,雖然它很強大,但是也不應該由它乙個來承擔所有mvc三個部分的功能。現實中我們的struts很好的規範了這個問題:servlet負責排程,專門的action負責處理邏輯,而jsp用於使用者介面顯示。jsp和servlet本質上是同乙個東西,只是從不同的角度來處理問題,它們各有所長,互為補充。

J2EE安全應用

color red tomcat 5.5 測試可用 color 閱讀宣告 本次案例,使用tomcat的 color red tomcat users.xml color 檔案 tomcat users.xml提供了安全領域,這個檔案會在tomcat啟動時載入進記憶體,它足夠用來 測試安全的配置效果。...

J2EE常用設計模式 工廠模式

軟體設計的一般原則 1.開閉原則 對擴充套件開放,對修改關閉 2.黎克特制代換原則 在任何基類出現的地方,子類一定可以出現 3.依賴倒轉原則 依賴於抽象,不依賴於實現 4.介面隔離原則 應當為客戶提供盡可能小的單獨的介面而不是大的總介面 5.組合,聚合復用原則 盡量使用組合聚合而不是使用繼承達到 復...

J2EE 類的建立

1.建立book類 package j2eetest 包名 author wanjinyoung public class book 獲取書名 public string getname 獲取作者 public string getauthor 獲取編號 public string getisbn ...