在 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 社区中所有即将到来的活动。

查看全部