開始使用 SpringSource dm Server
更新於 2008-10-28:新增最新的範例連結和第三方範例的連結
昨晚我在 費城 Spring 使用者群組上發表了「SpringSource dm Server 簡介」。在這次演講中,我建立了一個名為 GreenPages 的小型應用程式,展示了 dm Server 的所有主要方面。我向與會者承諾,我會在這裡發布該應用程式和投影片。
自 dm Server GA 版本發布以來的過去幾週,許多人一直在詢問開始使用 dm Server 的最佳方法,因此我將使用此條目將所有相關資訊收集在一起…
Spring Batch 2.0 新功能總覽
在本文中,我們概述了 Spring Batch 2.0 的主要主題,並重點介紹了與 1.x 的變更。新版本的開發工作正在順利進行中,上週發布了 M2 版本,並且我們對此產生了濃厚的興趣,因此現在似乎是提供一些指引的好時機。
Spring Batch 2.0 主題
新版本有四個主要主題
- Java 5 和 Spring 3.0
- 非循序執行
- 可擴展性
- 組態:註解和 XML 命名空間
Spring Batch 2.0.0.M2 中專案的實體佈局沒有變更(與舊的下載相同,Java 套件的基本佈局也相同)。我們沒有移除任何功能,但我們藉此機會修改了一些 API,並且有一些小變更…
了解 OSGi uses 指令
如果您為 SpringSource dm Server 或任何其他 OSGi 平台建立應用程式,您可能很快就會遇到 uses
指令。除非您清楚了解該指令的目的,否則您不會知道何時編寫程式碼,並且當套件由於 uses
衝突而無法解析時,您會開始猜測。本文應讓您徹底了解 uses
指令、何時使用它以及如何偵錯 uses
衝突。
套件解析
OSGi 的設計方式是,一旦套件「解析」後,您通常不應遇到由於類型…而導致的類別轉換例外和其他類似問題。
Spring.NET 1.2.0 RC1 發布
我們很高興地宣布 Spring .NET 1.2.0 RC1 已發布。
下載 | 支援 | 文件 | 變更日誌
此版本包含以下功能
- WCF 整合 - 使用依賴注入組態 WCF 服務。將 AOP 建議應用於 WCF 服務。
- MSMQ 整合 - MSMQ 協助程式類別,以提高您開發訊息應用程式的生產力。提供與 Spring 交易管理功能的整合。
- Apache ActiveMQ 整合 - 協助程式類別,以提高您使用 ActiveMQ 開發訊息應用程式的生產力
- Quartz 整合 - 使用依賴注入組態 Quartz 工作、排程器、觸發器。用於實作 Quartz 工作和與 Spring 交易管理功能整合的便利類別。
- AOP 基於繼承的新 AOP Proxy 產生。
- WebForm 依賴注入中的效能改進。
- NHibernate 2.0.1 支援。
1.2.0 RC1 中的其他值得注意的新功能
- 參考文件中的顏色程式碼和 XML 清單。
- 導入 sterotype 屬性 - 例如 [Repository]
- WCF 服務匯出器.
- 可擴充的 Web 導覽.
- 新的快速入門應用程式適用於 WCF、Quartz、MQMQ 和 Apache Active MQ 整合。
將以商業方式提供對 TIBCO EMS、Websphere MQ 和 Progress SonicMQ 的支援。 請聯絡 銷售人員以取得更多資訊。
請參閱變更日誌以取得更多詳細資訊。
請享用!
Spring Batch 2.0.0.M2 發布
Spring Batch 2.0.0.M2 現已推出。請參閱 Spring Batch 下載頁面以取得更多資訊 - 提供一般 .zip 下載,以及 S3 中的 Maven 成品。
此版本中的大部分工作都集中在使用區塊導向的處理方法,這意味著 ItemReader 和 ItemWriter 介面會變更,此外,還引入 ItemProcessor 作為輸入和輸出項目之間轉換的首要考量因素。區塊導向的處理是效能和可擴展性的關鍵推動因素,並且對於擴充點和介面中的使用者來說,也更加清晰(不再需要架構…
最佳化和調整 Apache Tomcat - 第 2 部分
幾週前,Filip Hanik 和我舉辦了關於最佳化和調整 Apache Tomcat 的系列網路研討會中的第二次網路研討會。網路研討會的錄音和投影片副本可從 SpringSource 網站的 網路研討會區取得。同一頁面也提供所有先前 SpringSource 網路研討會的連結,以及 Covalent 網路研討會檔案。
在問答環節中,我們無法回答所有問題,因此,正如承諾的那樣,以下是剩餘的問題和我們的答案。
- 如何識別 Tomcat 應用程式中的記憶體洩漏?
您幾乎肯定需要使用分析器來識別記憶體洩漏的根本原因。最新的 Sun JDK 包含 jhat 和 jmap 等工具。還有許多其他分析器可用,包括免費和商業版本。Filip 和我在調查 Tomcat 記憶體洩漏時使用 YourKit,因為 YourKit 向開放原始碼開發人員提供免費授權。
- 重新部署如何導致記憶體洩漏?
通常,當 Tomcat 載入的類別保留對 Web 應用程式載入的類別的參考時,就會發生這種情況。當 Web 應用程式停止時,Tomcat 類別載入器會繼續保留對 Web 應用程式載入的類別的參考。此類別保留對 Web 應用程式類別載入器的參考,而 Web 應用程式類別載入器又保留對其載入的所有類別的參考。因此,Web 應用程式類別載入器及其載入的所有類別不符合垃圾收集的資格。這會導致記憶體洩漏。這種情況的典型根本原因包括 JDBC 驅動程式和記錄架構。
- 變更 Tomcat 使用的 JVM 的最佳方法是什麼?
要使用的 JVM 是使用 JAVA_HOME(完整 JDK)或 JRE_HOME(僅 JRE)環境變數設定的。設定此變數的正確位置取決於您的環境,特別是如果 Tomcat 設定為在系統啟動時自動啟動。如果您可以自由選擇設定此變數的位置,則根據您的作業系統使用 setenv.bat 或 setenv.sh。
- 您是否建議使用特定的 JVM?
不,我們不建議使用特定的 JVM。您選擇的 JVM 供應商取決於您的作業系統。
- 我應該使用哪個連接器來將 Apache httpd 連接到 Tomcat?
我們建議使用 mod_proxy_http,其次是 mod_jk。通常,mod_proxy_ajp 的穩定性不如 mod_proxy_http 或 mod_jk。請注意,mod_jk2 已被棄用,不應再使用。
- 使用 SSL 時,maxKeepAliveRequests 的正確設定是什麼?
使用 SSL 時,應啟用 HTTP Keep-Alive,因為對於每個要求執行 SSL 交握都是一個相對昂貴的操作。
- 如果我們在 Solaris 上執行 Tomcat,您是否建議不要使用原生 APR 連接器?
是的,我們不建議使用。我們從客戶收到的反饋是,APR 連接器在 Solaris 上不穩定。
- 我們之前嘗試在 Solaris 上移至 mod_proxy_http,但遇到了幾個錯誤。這些錯誤是否已解決?
如果不了解確切的錯誤或您使用的版本,很難評論。所有已知的 Apache httpd 問題和目前狀態都可以在 ASF Bugzilla 資料庫中找到。Tomcat 問題也可以在 Bugzilla 中找到。
- 對於預設的區塊 IO HTTP 連接器,我應該使用哪個 maxKeepAliveRequests 值?
對於高並發環境,請將其設定為 1。否則,請將其設定為您在頁面上擁有的物件平均數量,介於 10 到 100 之間。
- 我該如何設定 JkOptions +DisableReuse?
JkOptions +DisableReuse 應與其他 mod_jk 設定一起放置在您的 httpd.conf 檔案中。
- 何時最適合使用 non-blocking IO HTTP 連接器?
當您需要支援高並發,且具有 keep alive 功能,但 APR 不是一個選項時,例如,因為它在您的平台上不穩定。
- 如果我在 Apache httpd 前面使用 Apache Tomcat,效能會更好嗎?
這取決於情況。如果您將所有請求代理到 Tomcat,則效能會略微下降。如果 httpd 處理某些請求(例如所有靜態內容),那麼您可能會看到一些好處。有許多基準測試試圖證明某種連接器比另一種更好。但是,這些基準測試幾乎不可能代表您的應用程式。唯一確定方法是在您的環境中,使用實際的負載和使用模式進行測試。
- Tomcat 可以不使用 Web 伺服器,直接在生產環境中使用嗎?
可以。這是否能為您的環境提供最佳效能,取決於該環境和您的應用程式。與之前的問題一樣,唯一確定方法是在您的環境中,使用實際的負載和使用模式進行測試。
- 在 Tomcat 前面使用 Apache httpd 會提高安全性嗎?
您安裝的安全性取決於許多因素。使用或不使用 Apache httpd 不太可能顯著改變您安裝的安全性。其他因素,例如保持更新最新的修補程式以及使用防火牆,通常對您的整體安全性水平產生更大的影響。
- 哪個 Apache httpd MPM 提供最佳效能?
一如既往,這將取決於您的環境,但 httpd 效能調整文件 提供了一些有用的通用指南。
- SpringSource ERS 和 Apache Tomcat 之間的效能差異是什麼?
SpringSource ERS 不僅僅是 Apache Tomcat。從純 Tomcat 的角度來看,效能不是區別因素。ERS 的優點是安裝簡單、易於管理升級和修補程式、支援多個實例以及所有元件的整合。
- 我的公司使用 Tomcat 和 XYZ 應用程式伺服器。Tomcat 與 XYZ 應用程式伺服器相比如何?整合有什麼好處嗎?
會有許多差異,而重要的差異會因組織而異。首先,確定您希望從應用程式伺服器獲得什麼,然後將該列表與市場進行比較。整合是有好處的。更高的統一性意味著更簡單的維護、更少的培訓等等。但是,也有成本。您需要研究您的組織以及它計劃如何整合(僅限新項目、下一個主要版本的所有項目、現在的所有項目等),以比較成本與相關的好處。
- 您是否有 Tomcat 和 XYZ 應用程式伺服器的效能比較可用?
該領域已發佈各種報告。結果的實用性取決於測試與您的負載的匹配程度。一如既往,唯一確定方法是在您的環境中,使用實際的負載和使用模式進行測試。
- 什麼是負載測試 Tomcat 伺服器的好方法?
- 為了實現高可用性和效能,可以將 Tomcat 配置為為同一個 Web 應用程式啟動多個 JVM 嗎?
Tomcat 不提供此配置選項。當然,您可以建立多個 Tomcat 實例,在每個實例上安裝您的應用程式,然後在這些實例之間進行負載平衡。
- 是否有 Tomcat 的通用健康檢查腳本?
Manager status page 可能是一個好的起點。您可以使用該 Servlet 的程式碼作為您自己更具體/廣泛檢查的基礎。如果您確實增強了它,請考慮將您的增強功能貢獻回 Apache Tomcat 社群。
- logging.properties 檔案位於哪裡?
預設位置位於 $CATALINA_BASE/conf。
平衡的問題:調整維護策略
經營業務至少在一個方面就像編寫程式碼:即使你知道你想實現什麼,你也不總是第一次就做對——但如果你準備在必要時修改,你最終會得到更好的結果。在 SpringSource,我們對最近宣佈的維護策略有一個清晰的願景:平衡開源社群的需求與企業用戶和 Spring 創建者的需求,以造福所有人。但是,我們第一次沒有完全平衡好,現在是時候進行一些重構了。
在過去的幾週裡,我...
Common Service Locator 函式庫
CommonServiceLocator 專案本週在 CodePlex 上發布,其總體思路是提供一個 IoC 容器不可知的 API,用於使用服務定位解析依賴項。SpringSource 的 Erich Eichinger 貢獻了 Spring.NET 實現,感謝 Erich!
這是 API,讓您了解基本概念 public interface IServiceLocator : System.IServiceProvider {
object GetInstance(Type serviceType); object GetInstance(Type serviceType, string key); IEnumerable