為何命名為 Acegi?

工程 | Ben Alex | 2007 年 1 月 25 日 | ...

繼 Rod 最近關於 Interface 名稱由來的部落格、最近的討論串質疑 Acegi Security 更名,以及我的同事 Ben Hale 去年底建議我撰寫關於 "Acegi" 名稱由來的部落格之後,我決定現在可能是時候這麼做了!

首先,發音:是 "ah-see-gee"。既然我們已經解決了發音問題,讓我們來看看它的由來

  • 早在 1990 年代初期,我開始經營一個 電子佈告欄系統。我仍然記得使用我的第一個 300 baud 數據機,並且實際看著字元以我閱讀的速度出現!無論如何,BBS 需要一個名稱,我非常喜歡 "Midnight BBS"(或者它是 "Lightning BBS"?)。在嘗試向澳洲 BBS 註冊處註冊我喜歡的名稱後,我接到一通電話,告知該名稱已被使用。我搜尋了另一個名稱,沒有發現衝突,並更改了我所有的螢幕(有人記得 Avatar 嗎?)。然後我去註冊 BBS 的新名稱,儘管其他人剛剛搶先我一步使用了相同的名稱。當時澳洲大約有 800 個 BBS - 競爭非常激烈!所以,我決定使用一個保證原創的名稱:取自英文字母的第 1、3、5、7 和 9 個字母。於是 Acegi BBS 就誕生了。
  • 那是 BBS 的鼎盛時期。它有來自澳洲各地的訪客,並且是我們地區第一個獲得看似無限容量的 CD-ROM 的 BBS。我成為 Fidonet 的 3:624 網路協調員,並協助在我們的區域傳播 "echomail"。不久之後,人們開始寄送抬頭為 "Acegi BBS" 的支票,因為他們想要更高的檔案下載限制以及訪問 Fidonet 的 netmail。
  • 因為我需要兌現名稱中帶有 "Acegi" 的支票,所以在 1993 年初,我們決定註冊一個商業名稱。選擇了 Acegi Computer Technology,人們也很樂意據此開立支票。
  • 大約在 1995 年,我因為工作搬到雪梨。撥接網路才剛開始在澳洲公開提供(使用數據機連線的費用仍然大約每小時 5 美元!)。因為 BBS 的大多數用戶來自特定的本地區域,而我即將離開該區域,所以我將 Acegi BBS 交給一位朋友繼續經營。他後來也搬走了,並將 BBS 傳給了另一位朋友。之後我就失去了聯繫。我用 Google 搜尋 "Acegi BBS",甚至找到了一個 1995 年的舊紀錄
  • 到了 1996 年,我需要一家公司來進行我的 IT 專案,所以 Acegi Technology Pty Limited 就誕生了。自此之後它一直持續營運。
  • 大約在 2003 年 11 月左右,我編寫了最終成為 Acegi Security 的程式碼。我將它放入一個 ZIP 檔案中,並寄給了 Rod 和 Juergen。我建議將這個新專案命名為 "Spring Security"。然而,他們當時沒有時間完全審閱它,所以建議我簡單地將它發布為 "Spring 的 _____ Security System"。因此,我在名稱中加上了 "Acegi" 前綴。截至今天,在 Google 上搜尋 "Acegi" 大約有 660,000 個結果,並且幾乎全部都與安全性框架相關。
接下來呢?名稱的下一個階段是 "fork"。雖然 Acegi Technology Pty Limited 將繼續營運,但 Acegi Security 將更名為 "Spring Security"。我們進行更名有多個充分的理由。然而,這不僅僅是一個更名練習。它實際上是一個重新定位,將 Acegi Security 更進一步地推入 Spring 產品組合中。

對於那些沒有聽過 Spring 產品組合的人來說,您將在未來幾個月聽到更多關於它的消息。Spring 實際上是一個具有相似技術和文化層面的相關產品家族。Spring 產品組合中的每個產品都具有一致的架構品質、關鍵設計模式、程式碼庫、文件、測試覆蓋率、友善的社群、開放原始碼許可證、整合範例、發布路線圖以及來自 Interface21 的商業服務(例如深入的培訓和支援)的可用性……

動態 DataSource 路由

工程 | Mark Fisher | 2007 年 1 月 23 日 | ...

Spring 2.0.1 引入了 AbstractRoutingDataSource。我相信它值得關注,因為(根據客戶經常提出的問題)我猜測有很多針對這個問題的 "自家製" 解決方案。再加上它實現起來很簡單但容易被忽略,現在我有幾個理由來整理一下我的團隊部落格的一角。

總體思路是,路由 DataSource 充當一個中介 - 而 "真實" 的 DataSource 可以根據查找鍵在執行時動態確定。一個潛在的用例是確保標準 JTA 不支援的交易特定隔離級別。為此,Spring 提供了一個實現:IsolationLevelDataSourceRouter……

Spring IDE 正在加速前進

工程 | Rod Johnson | 2007 年 1 月 22 日 | ...

我在上個月的 Spring Experience 會議上度過了一段美好的時光。我有一個驚喜是 Spring IDE 團隊最近所做的大量工作。我在會議上遇到了 Spring IDE 開發人員 Christian Dupuis 幾次,而且每次似乎他都實現了一個新功能……

即將發布的 Spring IDE 2.0 版本是一個全面的更新,以配合 Spring 2.0 中的新功能。Spring IDE 團隊正在 XML 擴展命名空間和 AOP 增強功能這兩個重要項目上取得重大進展。(順便說一句,如果您想知道我為什麼有一段時間沒有發布文章,我花了很多時間在 InfoQ 上撰寫一篇 Spring 2.0 更新文章……

使用 AJAX 和 Spring Integration 進行 Java 到 JavaScript 的編譯

工程 | Ben Alex | 2007 年 1 月 22 日 | ...

有一段時間,我對以客戶端為中心的基於 Web 的用戶介面感興趣。這些第四代框架的特點是它們基於組件、事件驅動的程式設計模型,並且專注於完全駐留在客戶端上的呈現邏輯。以這種方式定位 Web 瀏覽器通常需要使用 JavaScriptFlash,這本身就帶來了許多獨特的挑戰。

如果我們可以用 Java 進行編程,並自動產生一個 JavaScript 或 Flash 執行時模組,就可以解決許多這些挑戰。今天用於實現這一目標的兩個著名產品分別是 Google Web Toolkit (GWT) 和 Open Laszlo。兩者都根據 OSI 批准的許可證提供,並且擁有活躍的社群,以及它們自己獨特的複雜性。一個考慮因素是它們在多大程度上實現了提供一個透明的基於 Java 的開發環境的目標,該環境針對 Web 瀏覽器部署。這個考慮因素有幾個方面,包括 IDE 支援、調試整合、反射能力、執行時小部件綁定等。所有這些……

在 Ubuntu 上安裝 WebSphere Application Server 6.1

工程 | Rob Harrop | 2007 年 1 月 19 日 | ...

最近我和一個客戶一起在 WAS 6.1 上做了一些工作。由於我們有很多 Spring 用戶在使用 WAS,並且我需要測試該應用程式,所以我決定是時候在我的工作筆記型電腦上運行一個 WAS 的副本了。我說 "其中一台",因為我目前正在我的 Mac (帶有 OSX) 和我的 ThinkPad (帶有 Ubuntu) 上工作 - 最近我一直在使用 ThinkPad,因為我可以同時運行 Oracle XE 和 WAS,而無需像 Parallels 這樣的 VM 工具。我仍然更喜歡 Mac,但說實話,每天並沒有太大的區別 - 我只是懷念一些更有用的 Mac 工具,例如 SpotlightQuicksilverTextMateNewsFire

無論如何,回到主題 - 在 Ubuntu 上安裝 WAS 6.1。我正在使用 Ubuntu Edgy,我第一次嘗試安裝完全失敗,我就是無法弄清楚原因。謝天謝地,快速 Google 搜尋找到了 這篇文章。我完全不知道/bin/sh連結到 dash 而不是 bash - 他們到底在想什麼。我不太喜歡運行安裝程式、讓它失敗然後更改已安裝目錄中的所有腳本的建議解決方案。相反,我只是重新連結了/bin/sh使用一個快速的sudo unlink /bin/sh然後sudo ln -s /bin/bash /bin/sh。之後,安裝程式運行得非常順利,我在大約 15 分鐘內就完成了一個 WAS 的安裝並開始運行。

即使在我的同時運行 Oracle XE 的 ThinkPad 上,WAS 也能非常快速地運行。WAS 最好的事情之一是它提供的工具(管理控制台、命令行工具)非常強大。管理控制台的效能非常出色 - 許多其他伺服器的控制台速度慢得令人痛苦。

過橋太遠

工程 | Rob Harrop | 2007 年 1 月 16 日 | ...

在我上一篇文章中,我介紹了一種創建策略類別的技術,該技術可以充分利用應用程式中存在的任何泛型元數據。 在該條目的結尾,我展示了這段程式碼片段

EntitlementCalculator calculator = new DividendEntitlementCalculator();
calculator.calculateEntitlement(new MergerCorporateActionEvent());

你會記得DividendEntitlementCalculator被定義為

public class DividendEntitlementCalculator implements EntitlementCalculator<DividendCorporateActionEvent> {

    public void calculateEntitlement(DividendCorporateActionEvent event) {

    }
}

因此,傳遞一個MergerCorporateActionEvent的實例到calculateEntitlementDividendEntitlementCalculator類別的方法中是不正確的。 但是,正如我在上一篇文章中提到的那樣,該程式碼將編譯。 為什麼? 好吧,EntitlementCalculator.calculateEntitlement()被定義為接受擴展CorporateActionEvent的任何類型,因此它應該編譯。 那麼,在這種情況下,執行時會發生什麼,Java 如何強制執行類型安全? 好吧,正如你可能想像的那樣,運行此程式碼會給你一個ClassCastException說你不能投射一個MergerCorporateActionEventDividendCoporateActionEvent。 透過這種方式,Java 可以為您的應用程式強制執行類型安全 - 無法讓MergerCorporateActionEvent偷偷進入一個DividendCorporateActionEvent預期的位置的方法中。

這裡真正的問題是:'那個ClassCastException來自哪裡?' 答案很簡單 - Java 編譯器透過引入一個橋接方法來添加程式碼以建立並在適當的時候拋出它。 橋接方法是編譯器將生成並添加到您的類別中的合成方法,以確保在面對泛型類型時的類型安全。

在上面顯示的情況下EntitlementCalculator.calculateEntitlement可以使用與CorporateActionEvent類型相容的任何物件來呼叫。 然而,DividendEntitlementCalculator僅接受與DividendCorporateActionEvent類型相容的物件,但是,由於你可以透過DividendEntitlementCalculator透過EntitlementCalculator介面呼叫CorporateActionEvent。 那麼,這在編譯後的類別檔案中是什麼意思? 我們有使用者提供的方法

public void calculateEntitlement(DividendCorporateActionEvent event) {
    System.out.println(event);
}

,它轉換為這個位元組碼

public void calculateEntitlement(bigbank.DividendCorporateActionEvent);
  Code:
   Stack=2, Locals=2, Args_size=2
   0:   getstatic       #2; //Field java…

使用 Stub 和 Mock 進行單元測試

工程 | Dave Syer | 2007年1月15日 | ...

前幾天我和一些客戶在現場,他們問我關於單元測試和模擬物件的問題。我決定將我們討論的一些內容寫成一個關於為單元測試創建依賴項(協作者)的教程。我們討論了兩種選擇:樁程式 (stubbing) 和模擬物件 (mock objects),並提供了一些簡單的例子來說明它們的用法以及兩種方法的優點和缺點。

在單元測試中,通常會模擬或樁程式化被測類別的協作者,以便測試獨立於協作者的實現。 能夠做到這點也很有用…

Spring Web Flow 1.0.1 已發布

發布 | Keith Donald | 2007年1月11日 | ...

親愛的 Spring 社群,

我們很高興地宣布 Spring Web Flow 1.0.1 已發布。

 

Spring Web Flow 是一個新一代的 Java Web 應用程式控制器框架,允許開發人員將使用者操作建模為稱為流程 (flows) 的高階模組。 該框架可提高生產力和可測試性,同時為強制執行導航規則和管理應用程式狀態提供強大的解決方案。

發布說明

Spring Web Flow 1.0 在兩個月內下載次數超過 10,000 次,並在 Fortune 500 強公司中被大量使用。 這是第一個 1.0 維護版本,包括自 1.0 最終版本以來報告的錯誤修復,以及引入了一些小的增強功能。 請參閱變更日誌以獲取所有詳細資訊。

入門

開始使用 Spring Web Flow 的最佳方法是 下載發布版本、閱讀 Erwin 的實用介紹,並逐步執行 範例應用程式。 我們建議查看所有範例,從 Phonebook 開始,並根據需要補充 參考手冊 資料。 發布版本附帶十個範例應用程式,每個範例都演示了一組不同的產品功能。

祝您使用愉快!

Keith Donald 和 Erwin Vervaet
Spring Web Flow 專案負責人

Spring 2.0 中有什麼新的和酷的東西?

工程 | Ben Alex | 2006年12月17日 | ...

上個月,Rod Johnson 在三次澳洲 Spring 使用者群組會議上發表了一個名為「Spring 2.0 中有什麼新的和酷的東西」的演講。 Rod 在這些會議中提到,我會提供他的簡報,所以這裡就是

還有一些最近的簡報,人們也一直在用電子郵件詢問我。 不分先後順序,這是最新的

對於那些參加演講的人,我希望你們喜歡它們。

取得 Spring 電子報

透過 Spring 電子報保持聯繫

訂閱

領先一步

VMware 提供培訓和認證,以加速您的進步。

了解更多

獲得支持

Tanzu Spring 在一個簡單的訂閱中提供對 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位文件。

了解更多

即將到來的活動

查看 Spring 社群中所有即將到來的活動。

查看全部