為什麼叫Acegi?

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

在 Rod 最近關於Interface 名稱起源的部落格,以及最近關於 Acegi Security 更名的討論,加上去年底我的同事 Ben Hale 建議我寫一篇關於“Acegi”名稱起源的部落格,我決定是時候這樣做了!

首先,發音是:“啊-西-吉”。既然我們已經搞定了這個,那麼我們來了解一下它的來源。

  • 早在20世紀90年代初,我創辦了一個公告板系統。我仍然記得我第一次使用300波特率調變解調器,並且實際上是看著字元以我能閱讀的速度出現!總之,BBS需要一個名字,我很喜歡“午夜BBS”(或者是不是“閃電BBS”?)。在嘗試向澳大利亞BBS註冊局註冊我喜歡的名字後,我接到一個電話,被告知這個名字已經被佔用了。我尋找了另一個名字,沒有發現衝突,並更改了我所有的螢幕(有人記得Avatar嗎?)。然後我打算用新名字註冊BBS,但另一個人剛剛搶先註冊了相同的名字。當時澳大利亞大約有800個BBS——競爭非常激烈!所以,我決定選擇一個保證是原創的名字:英文字母的第1、3、5、7和9個字元。於是Acegi BBS誕生了。
  • 這是BBS的鼎盛時期。它擁有來自澳大利亞各地的呼叫者,也是我們區號中第一個獲得看似無限容量的CD-ROM的BBS。我成為了Fidonet的3:624網路協調員,並幫助在我們的區域內分發“echomail”。不久,人們開始寄來抬頭為“Acegi BBS”的支票,因為他們想要更大的檔案下載限制和訪問Fidonet的網郵件。
  • 由於我需要兌現名稱中帶有“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安全系統”的形式釋出。因此,我將“Acegi”作為字首加入了名稱。截至今天,Google搜尋“Acegi”有大約660,000個結果,其中幾乎全部都與該安全框架相關。
何去何從?名稱的下一階段是“分叉”。Acegi Technology Pty Limited 將繼續運營,而 Acegi Security 將更名為“Spring Security”。我們更名有幾個充分的理由。然而,這不僅僅是一個更名練習。它實際上是一個重新定位,將 Acegi Security 進一步融入 Spring 產品組合。

對於那些還沒有聽說過 Spring 組合產品的讀者,你們將在未來幾個月內更多地聽到它。Spring 實際上是一個相關的產品家族,在技術和文化維度上具有可比性。Spring 組合中的每個產品都共享一致的架構質量、關鍵設計模式、程式碼庫、文件、測試覆蓋率、友好的社群、開源許可、整合的示例、釋出路線圖以及來自 Interface21 的商業服務(例如深入的培訓和支援)的可獲得性……

動態資料來源路由

工程 | 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 整合進行 Java 到 JavaScript 編譯

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

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

如果我們能夠用 Java 程式設計並自動生成 JavaScript 或 Flash 執行時模組,那麼就可以解決許多這些挑戰。如今,有兩種著名的產品可以實現這一點:分別是 Google Web Toolkit (GWT) 和 Open Laszlo。兩者都根據 OSI 批准的許可提供,並擁有活躍的社群,同時也各自有其獨特的複雜性。一個考慮因素是,它們在多大程度上實現了提供針對 Web 瀏覽器部署的透明的基於 Java 的開發環境的目標。這個考慮因素有幾個方面,包括 IDE 支援、除錯整合、反射能力、執行時控制元件繫結等等。所有這些……

在 Ubuntu 上安裝 WebSphere Application Server 6.1

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

最近我一直在和一個客戶合作,處理 WAS 6.1 的一些工作。由於我們有很多 Spring 使用者在 WAS 上,我需要測試應用程式,所以我決定是時候在我的一個工作筆記型電腦上執行一個 WAS 副本了。我之所以說“一個”,是因為我目前在我的 Mac(使用 OSX)和我的 ThinkPad(使用 Ubuntu)上工作——最近我只使用 ThinkPad,因為我可以在沒有 Parallels 等虛擬機器工具的情況下執行 Oracle XE 和 WAS。我仍然更喜歡 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 的安裝並執行起來。

即使在我的 ThinkPad 上同時執行 Oracle XE,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的例項傳遞給calculateEntitlement方法是不正確的。DividendEntitlementCalculator然而,正如我在上一篇文章中提到的,該程式碼將編譯。為什麼?嗯,EntitlementCalculator.calculateEntitlement()被定義為接受任何擴充套件CorporateActionEvent的型別,因此它應該編譯。那麼在這種情況下,執行時會發生什麼,Java 如何強制執行型別安全?嗯,正如您可能想象的,執行此程式碼會得到一個ClassCastException,提示您無法強制轉換MergerCorporateActionEvent轉換為DividendCoporateActionEvent。透過這種方式,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…

使用存根和模擬進行單元測試

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

前幾天我與一些客戶在一起,他們問我關於單元測試和模擬物件的問題。我決定將我們討論的一些內容寫成一篇關於為單元測試建立依賴項(協作者)的教程。我們討論了兩種選擇,存根和模擬物件,並給出了一些簡單的例子來說明兩者的用法、優點和缺點。

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

Spring Web Flow 1.0.1 釋出

釋出 | Keith Donald | 2007 年 1 月 11 日 | ...

親愛的Spring社群,

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

 

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

釋出說明

Spring Web Flow 1.0 在兩個月內下載量超過 10,000 次,並被財富 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 社群所有即將舉行的活動。

檢視所有