在 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 這樣的虛擬機器工具。我仍然更喜歡 Mac,但說實話,日常使用區別不大——我只是想念一些更有用的 Mac 工具,比如 SpotlightQuicksilverTextMateNewsFire

言歸正傳——在 Ubuntu 上安裝 WAS 6.1。我正在使用 Ubuntu Edgy,我的第一次安裝嘗試完全失敗了,我怎麼也想不明白原因。幸運的是,快速谷歌搜尋找到了這篇文章。我完全不知道/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 編譯器透過引入橋接方法(bridge method),在適當的時候添加了建立和丟擲它的程式碼。橋接方法是編譯器生成並新增到你的類中的合成方法,以確保在面對泛型型別時的型別安全。

在上面展示的例子中EntitlementCalculator.calculateEntitlement可以用任何與CorporateActionEvent型別相容的物件呼叫。然而,DividendEntitlementCalculator只接受與DividendCorporateActionEvent型別相容的物件,但是,由於你可以透過DividendEntitlementCalculator呼叫EntitlementCalculator介面,它也必須接受CorporateActionEvent。那麼這在編譯後的 class 檔案中意味著什麼呢?我們有使用者提供的方法

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日 | ...

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

在單元測試中,通常會對被測類的協作物件進行 mock 或 stub,以便測試不受協作物件實現的影響。能夠做到這一點也很有用,可以…

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 次,並在財富 500 強公司中得到廣泛使用。這是 1.0 的第一個維護版本,包含自 1.0 final 版本以來報告的錯誤修復,並引入了一些小的改進。請參閱更新日誌瞭解所有詳細資訊。

入門

開始使用 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 在那些會議上提到我會公開他的演講,所以在此提供

還有一些最近的演講,人們也一直在給我發郵件詢問。以下是按任意順序列出的最新內容

參加過演講的各位,希望你們喜歡。

為什麼叫 Interface21?

工程 | Rod Johnson | 2006年12月16日 | ...

幾周前,我在部落格上寫了關於Spring 名稱的由來。我們還收到很多關於 Interface21 名稱由來的問題。

對於任何讀過我的書或思考過 Spring 設計的人來說,interface 這部分毫不意外。它既借用了面向物件的介面概念(我對此一直深愛),也指代了系統介面的概念。例如,為一個現有的綠屏系統新增 Web 介面——這正是我在第一次想到公司名字時實際在做的事情。

到目前為止,都很好理解。真正的問題出在數字上。

和 Spring 這個名字一樣,有些猜想比真實的解釋更有趣。所以我們先從我聽過的關於 21 的一些猜想開始…

getConfigLocations() 怎麼了?

工程 | Ben Hale | 2006年12月8日 | ...

上週我在一個客戶現場,人群中有人提問:“為什麼 getConfigLocations() 不再是 abstract 了?”在客戶面前工作一段時間後,你很少會語塞,但我當時確實如此。老實說,我的第一反應是客戶不可能對。但你看,在 AbstractSingleSpringContextTests 的 1.3 版本中明確指出 getConfigLocations() 不再是 abstract 了。我沒有針對 2.0.1 建立任何新的整合測試,所以甚至沒見過這個變化。

對此感到驚訝,我給 Juergen 發了一封郵件詢問…

您在 The Spring Experience 2006 上可以期待什麼…

工程 | Keith Donald | 2006年11月30日 | ...

這些會場照片是昨天拍攝的(靠近這樣的地方是 Interface21 在佛羅里達設有辦公室的福利之一)。

 
雄偉的 Westin Diplomat 酒店
配備無邊泳池
下面有漂流河
位於美麗的沙灘邊

我們將其中幾張照片融入到主要會議橫幅中,這些橫幅將懸掛在 Diplomat 酒店高聳的天花板上。一切都已準備就緒,迎接一場精彩的活動。下週在 The Spring Experience 見!

SimpleJdbcTemplate:Spring 2.0 和 Java 5

工程 | Ben Hale | 2006年11月28日 | ...

在籌備 The Spring Experience 期間,我一直很忙,但我注意到 Rod 在部落格方面非常活躍。所以今天在機場和飛機上的一些空閒時間裡,我決定也寫點部落格。

我們 Spring 社群面臨的最大權衡之一是確保向後相容的同時進行創新。創新的一部分是利用 Java 後續版本(例如 Java 5)中的新特性和構造。自 1.2.x 分支以來,我們已經在諸如 @Transactional 註解以及基於 @ManagedResource 註解的 JMX 自動檢測等方面看到了這一點。最終,這些都是很棒的特性,極大地簡化了開發(至少我的開發),但這實際上是將元資料移入程式碼。我們之前沒有看到的是…

獲取 Spring 時事通訊

訂閱 Spring 時事通訊,保持聯絡

訂閱

領先一步

VMware 提供培訓和認證,助力您快速提升。

瞭解更多

獲得支援

Tanzu Spring 透過一項簡單的訂閱,為 OpenJDK™、Spring 和 Apache Tomcat® 提供支援和二進位制檔案。

瞭解更多

即將到來的活動

檢視 Spring 社群中所有即將到來的活動。

檢視全部