为什么叫 Acegi?

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

在 Rod 最近关于Interface 名称的起源的博客文章、最近的一条讨论线程(询问 Acegi Security 的重命名)以及我同事Ben Hale去年年底提出的关于“Acegi”名称起源的博客建议之后,我决定是时候写一篇关于它的博客了!

首先,发音:“ah-see-gee”。现在我们已经解决了这个问题,让我们看看它的起源。

  • 早在 90 年代初,我创建了一个公告板系统。我仍然记得使用我的第一个 300 波特调制解调器,并且实际上以与我阅读速度相同的速度观看字符出现!无论如何,BBS 需要一个名称,我非常喜欢“Midnight BBS”(或者“Lightning BBS”?)。在我尝试在澳大利亚 BBS 注册中心注册我首选的名称后,我接到了一个电话,告知我该名称已被占用。我搜索了另一个名称,没有发现冲突,并更改了我的所有屏幕(有人记得Avatar吗?)。然后我使用新名称去注册 BBS,尽管其他人刚刚抢先我使用了相同的名称。当时澳大利亚大约有 800 个 BBS - 这是一场激烈的竞争!所以,我决定使用一些可以保证原创的东西:英语字母表的第 1、3、5、7 和 9 个字符。Acegi BBS 诞生了。
  • 这是 BBS 的鼎盛时期。它有来自澳大利亚各地的用户,并且是我们地区第一个获得 CD-ROM 似乎无限容量的 BBS。我成为了Fidonet的 3:624 网络协调员,并帮助在我们的地区分发了“回声邮件”。不久,人们开始寄出以“Acegi”为抬头支付的支票,因为他们希望获得更大的文件下载限制和访问 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”。但是,他们当时没有时间完全审查它,所以建议我只是将其发布为“_____ Security System for 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。由于我们在 WAS 上有很多 Spring 用户,并且我需要测试应用程序,因此我决定是时候在我的工作笔记本电脑之一上运行 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 安装。

即使在我的同时运行 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的实例传递给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 社区中所有即将举行的活动。

查看全部