vFabric Cloud Application Platform 更新

工程 | Adam Fitzgerald | 2010年11月30日 | ...

vFabric
我们最近发布了 vFabric Cloud Application Platform 的多个组件的更新。正如 Rod Johnson 在 原始公告中所提到的,vFabric 旨在快速交付可即时扩展且可移植到云的下一代应用程序。这些最近的更新进一步增强了运行时应用程序服务之间的集成,并提高了现代应用程序的性能、可伸缩性、监控和可管理性。

vFabric tc Server 2.1

vFabric tc Server 的更新继续使其成为构建和运行 Spring 应用程序的最佳选择: 

  • Spring Insight
    随 tc Server 2.1 一起包含的 Spring Insight 在开发和预生产阶段提供了对 Spring 应用程序行为和性能的实时可见性。现在可以持久化应用程序行为的深入实时可见性,以查看跨越先前时间范围的信息。管理和导航的改进使其易于操作并更直观地呈现有用信息。
  • 增强的模板
    一个内置的新模板机制简化了 tc Server 与 vFabric GemFire HTTP Session Management 和 Hibernate Cache Modules 的配置。这使得 vFabric GemFire 能够与 tc Server 2.1 自动启动——无需更改应用程序代码或其他手动干预。

vFabric GemFire 6.5

vFabric GemFire 是现代应用程序的分布式数据管理平台,提供动态可伸缩性、极高的性能和数据库类持久性。两个新模块简化了 GemFire 与 tc Server 和 Hibernate 的集成,为现代应用程序提供复杂的数据管理。Jags Ramnarayan 在他 最新的博客文章中进行了详细介绍,但我们会在此处提供快速概述。

  • vFabric GemFire HTTP Session Management Module
    vFabric GemFire HTTP Session Management Module 卸载并管理 tc Server 或 Tomcat 服务器的 HTTP 会话状态。GemFire HTTP Session Management 经过预先配置并与 tc Server 自动启动,提供高性能和可伸缩性。这对于处理大量请求并需要横向扩展以满足需求的 Web 应用程序特别有用。
    • 将会话管理与 tc Server 或 Tomcat Servlet/JSP 容器解耦
    • 独立扩展应用程序服务器和 HTTP 会话处理
    • 处理非常大的会话而不会丢失会话
    • 通过新模板机制轻松连接到 tc Server,或通过少量配置修改连接到 Tomcat
  • vFabric GemFire Hibernate Cache Module
    vFabric GemFire Hibernate Cache Module 为 Hibernate 提供了快速、可伸缩、分布式的 L2 缓存。Swapnil Bawaskar 在他最新的 博客文章中涵盖了详细信息。
    • 显著提高 Hibernate 性能
    • 减少到数据库服务器的网络流量(和潜在瓶颈)
    • 获得 GemFire 的所有企业级功能
    • 可伸缩性——跨整个集群分区数据
    • 开发者生产力与云规模部署

vFabric Hyperic 4.5

vFabric Hyperic 是 vFabric Cloud Application Platform 的应用程序管理和监控组件,它提供了对整个虚拟化应用程序栈的完整连续可见性。 Jennifer Hickey 最近描述了 Hyperic 4.5 版本的内部细节……

STS 2.5.1 中新的 Groovy 调试支持

工程 | Andrew Eisenberg | 2010年11月30日 | ...

在最近发布的 SpringSource Tool Suite 2.5.1 中,我们对 Groovy 调试进行了重大改进。一直以来,都可以使用 Eclipse 对 Java 的标准调试支持来调试 Groovy 应用程序,但由于 Groovy 与 Java 的语言差异及其元编程,许多调试功能一直未能正常工作。

这篇文章中的所有截图都来自一个简单的 Grails 应用程序,因此此处的调试功能隐含地利用了动态添加的 Groovy 方法和属性。

步进

借助增强的 Groovy 调试支持,……

Spring Integration 2.0 GA 发布

工程 | Mark Fisher | 2010 年 11 月 23 日 | ...

我非常高兴地宣布 Spring Integration 2.0 GA 已发布!

下载

包含 Spring Integration JARs、源代码 JARs 和文档的分发 zip 可在此处下载 here

依赖配置

这些工件也应该稍后在今天提供从 Maven 中央存储库中获取。在此期间,您可以将 springframework Maven 存储库添加到您的 POM 中。以下示例显示了对“spring-integration-core”的依赖以及 springframework 存储库条目。如果您计划使用任何适配器,可以将“spring-integration-core”替换为相应的适配器……

拥抱 Spring 移动应用开发

工程 | Keith Donald | 2010年11月20日 | ...

SpringOne2gx 大会上,我们宣布了在社交媒体和移动应用程序开发领域令人兴奋的新举措。几周前,Craig Walls 发布了 Spring Social。今天,Roy Clarkson 发布了 Spring MobileSpring Android。在这篇文章中,我将重点介绍这些项目,并分享 Spring 如何旨在简化移动应用程序开发。

移动应用开发中的选择

如果您参加了今年的 SpringOne2gx,您会看到 Greenhouse,这是我们为社区构建的一个应用程序,它也作为 Spring 技术的参考和驱动。Craig 向您展示了 Greenhouse 的一些社交元素,例如将您的帐户与 Twitter 和 Facebook 连接的功能。还有许多移动元素。具体来说,Greenhouse 兼作移动 Web 应用程序,并支持原生的 iPhone 版 Greenhouse……

GORM 的另一种风味:MongoDB

工程 | Graeme Rocher | 2010年11月15日 | ...

我们使 GORM 普及到所有 NoSQL 存储的努力今天又达到了一个里程碑,我们很高兴地宣布 GORM for MongoDB

MongoDB 是一种文档数据库,它弥合了键值存储(快速且高度可扩展)和传统 RDBMS 系统(提供丰富的查询和深入功能)之间的鸿沟。

RedisGemfire 插件一样,GORM for MongoDB 完全支持 CRUD 操作

def person = new Person(name:"Fred", age: 45)
person.save()

person = Person.get(person.id)
assert person != null

person.delete()

assert Person.get(person.id) == null

使用动态查找器进行丰富的查询……

Hyperic 4.5 发布

工程 | Jennifer Hickey | 2010年11月10日 | ...

经过数月的开发,我很自豪地宣布Hyperic 4.5发布。在此版本中,我们将Hyperic从JBoss上运行的EJB应用程序迁移到Tomcat上运行的Spring Web应用程序。详细的迁移步骤在我的将Hyperic从EJB迁移到Spring的案例研究中进行了介绍,该案例研究最初在最近的SpringOne 2GX上发表。在这篇文章中,我想重点介绍一些我最喜欢的转换内容。

改进的可测试性

切换到Spring使我们能够将现有的无状态会话EJB转换为具有自动装配依赖项的POJO。这消除了许多使单元测试变得困难的静态JNDI查找代码。Spring还显著简化了集成测试。在转换之前,我们有少数集成测试,每个测试都需要几分钟来引导EJB容器的近似值。这个过程繁琐且容易出错。此外,测试通常会使数据库处于不一致状态,因此需要添加数据库设置或拆卸代码,这增加了测试执行时间的额外开销,并偶尔导致测试结果不一致。

转换后,我们能够利用Spring的集成测试支持来测试我们新的转换后EJB服务层,就像……

Green Beans: Putting the Spring in Your Step (and Application)

工程 | Josh Long | 2010年11月09日 | ...

Spring框架在2003年成为事实上的标准,并一直以来帮助人们用更简洁的代码构建更大、更好的应用程序。在本文中,我们将讨论使用Spring组件模型配置应用程序的可用选项。我们将从最简单的形式构建一个简单的应用程序,并对其进行重构,以利用Spring框架中的许多简化功能,这些功能使其成为当今应用程序的事实标准,并将继续如此。

现代企业 Java 应用程序有许多协作对象,它们……

社交化 Spring 应用程序

工程 | Craig Walls | 2010年11月03日 | ...

如今,网民越来越多地使用互联网通过社交网站与朋友、家人和同事建立联系。曾经通过电子邮件进行的对话现在发生在 Facebook 墙上的短消息或 Twitter 上的简短推文中。曾经通过握手建立的联系现在通过 LinkedIn 建立。当希望面对面会面时,可以使用 TripIt 共享旅行详情。

正如人们使用这些社交网站相互交流一样,企业也在寻找方法将自己注入社交图谱,以便以更个人的方式与客户建立联系,并使他们的网站成为客户社交体验的延伸。

本周,我们很高兴发布了 Spring Social 的第一个里程碑版本,这是一个 Spring 的新扩展,旨在提供一个平台,用于构建具有社交功能的 Spring 应用程序。我想借此机会向您介绍 Spring Social,并让您初步了解它提供的功能。

安全共享社交数据

表面上看,开发与各种社交网络交互的应用程序似乎很简单。由于大多数社交网络都提供 REST API,Spring 的 RestTemplate 似乎就是您所需要的。但您很快会发现,这些社交 REST API 受 OAuth 保护,并且使用 OAuth 凭据签署通过 RestTemplate 发送的请求是一项非琐碎的任务。

OAuth 是一种开放协议,它允许用户与其在一个或多个服务提供商上托管的数据共享给另一个应用程序。通过访问这些数据,应用程序可以聚合、呈现和处理信息,从而提供超出服务提供商本身预期或设想的附加价值。

几乎所有主要的提供商都支持 OAuth,包括 Twitter、Facebook、LinkedIn、TripIt 和 Foursquare,以及 Google 和 Yahoo API。因此,OAuth 对于开发具有社交功能的应用程序至关重要。

在 OAuth 安全交互的开始阶段,有一个来回的对话,通常称为“OAuth 舞步”。在典型的 OAuth 舞步中,涉及三方:

  • 服务提供商(例如 Twitter 或 LinkedIn)
  • 希望访问或更新该服务提供商托管数据的用户。
  • 用户希望与之共享数据的消费者应用程序。

此舞步的关键步骤如下:

  1. 消费者应用程序将用户重定向到服务提供商的站点进行登录并授权消费者。
  2. 假设用户同意授予消费者访问其数据的权限,则流程将返回到消费者应用程序。
  3. 消费者应用程序从服务提供商处收到访问令牌。

步骤 3 中收到的访问令牌是任何请求服务提供商 REST API 都必须附带的“代客钥匙”。在 OAuth 1 中,这意味着访问令牌、请求 URL、参数以及其他一些信息被收集到一个基本字符串中,进行加密,然后作为 Authorization 标头发送到请求中。构造此标头并将其附加到请求是一项复杂的任务。这就是为什么使用 RestTemplate 访问 OAuth 安全资源很困难的原因。如果操作错误,服务提供商将对您尝试访问的任何资源响应 HTTP 401,并且对加密的 Authorization 标头进行调试很棘手。

使用社交模板

Spring Social 的一个关键组件是其社交模板集合。这些模板(在底层利用 RestTemplate)暴露了它们所模拟的服务提供商的操作,并处理了添加 OAuth Authorization 标头的复杂性。

Spring Social 1.0.0.M1 包含 4 个社交模板供您选择:

  • TwitterTemplate
  • FacebookTemplate
  • LinkedInTemplate
  • TripItTemplate

要使用这些模板中的任何一个,只需创建一个实例,通过构造函数参数提供 OAuth 连接详细信息。例如,创建 TwitterTemplate 的实例:

TwitterTemplate twitter = new TwitterTemplate(apiKey, apiSecret, accessToken, accessTokenSecret);

TwitterTemplate 构造函数中的四个参数都是 String 类型。API 密钥和 API 密钥在您向 Twitter 注册应用程序时获得(请参阅 http://dev.twitter.com/apps/new)。访问令牌和访问令牌密钥是在 OAuth 舞步与 Twitter 结束时按用户授予您的应用程序的。此时,我将假设您已经获得了这四个值;我们稍后会回到如何管理 API 密钥和令牌。

创建其他社交模板的实例并没有太大区别。LinkedInTemplateTripItTemplate 各自具有与上面显示的 TwitterTemplate 构造函数相同的参数列表的构造函数。由于 Facebook 的 API 安全性基于 OAuth 2,FacebookTemplate 的构造函数更简单,只需要访问令牌的值。

FacebookTemplate facebook = new FacebookTemplate(accessToken);

一旦您拥有了其中一个社交模板的实例,您可以用它做什么?如果您使用的是 TwitterTemplate,也许您想知道已认证用户的 Twitter 屏幕名称?

String screenName = twitter.getProfileId();

或者,如果您想做一些更复杂的事情,也许您可以代表用户发送一条推文?

twitter.updateStatus("Hey, I'm tweeting with #Spring Social!");

同样,有了 FacebookTemplate,您可以发布到用户的墙上。

facebook.updateStatus("Spring Social can also post to Facebook!");

如果您想查看用户的即将到来的旅行行程,TripItTemplategetTrips() 可以满足您的需求。

List trips = tripIt.getTrips();
for(Trip trip : trips) {
    System.out.println("I'm traveling to " + trip.getPrimaryLocation() +
                                 " on " + trip.getStartDate());
}

这只是 Spring Social 模板可以做的一些事情的示例。请查看 API 文档以了解可用的其他操作。

管理 OAuth 连接

当我上面创建 TwitterTemplate 实例时,我省略了 API 密钥/密钥和访问令牌的来源。起初,访问令牌将在用户授权应用程序访问其在服务提供商处托管的数据后获得。但您可能不希望每次用户使用您的应用程序时都强制他们进行授权,因此您需要一种方法来长期存储访问令牌,以便在将来的会话中重复使用。

在其第一个里程碑版本中,Spring Social 没有提供 OAuth 令牌管理策略,而是让应用程序自行获取和管理 OAuth 详细信息。这是我们计划在 1.0 Milestone 2 中解决的问题。但在此之前,我们可以参考 Greenhouse 来了解这可能如何成形。

在 Greenhouse 中,有关服务提供商的所有信息都存储在关系数据库的 ServiceProvider 表中,其架构如下:

如您所见,ServiceProvider 表包含提供商的 API 密钥和密钥等信息。为了访问单个服务提供商记录,Greenhouse 使用 JdbcServiceProviderFactory,它是 ServiceProvider 接口的实现。

package com.springsource…

Spring Python 1.2.0.RC1 已发布!

工程 | Greg L. Turnquist | 2010年11月03日 | ...

经过数月的工作,Spring Python 的第一个 1.2 版本已可用

该项目已将其文档迁移到 Sphinx,这是用于记录 Python 语言本身的工具。您可以访问项目网站并以HTML 格式查看,或下载epub 版本以便在智能手机或平板设备上查看。

此版本的 Spring Python 迁移到 Python 2.6,放弃了对 2.4 和 2.5 的支持。这意味着团队正在准备利用 Python 的许多新功能,这也为将来向 Python 3.x 过渡铺平了道路。

Spring Python 具有……

Spring Integration 2.0 Release Candidate 1

工程 | Mark Fisher | 2010年10月29日 | ...

我们很高兴地宣布 Spring Integration 2.0 的第一个候选版本!下载 | 参考手册 | JavaDoc

我想借此机会提供一个通用的“有什么新内容?”指南。实际上,新的功能和改进太多,无法在一篇文章中全部涵盖,但我将重点介绍一些亮点。随着我们越来越接近 2.0 GA 版本,我们将发布更多博客。目前,本文大致基于 Oleg 和我上周在 SpringOne 上的一次演示。该演示主要是通过代码演示的,代码可在我们的Git 仓库中找到。

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,助您加速进步。

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看所有