Apache Tuscany 小组上月发布了服务组件架构(Service Component Architecture,即 SCA)项目的1.2 版及服务数据对象(Service Data Objects,即SDO)项目的1.1 版。
SCA 和 SDO 最初是由 IBM 和 BEA 开发的一套规范,现在由 OASIS 开放合成服务架构(Open Composite Services Architecture,即 Open CSA )维护。工作组成员包括:IBM、BEA、Primeton、Sun、SAP、Oracle、Red Hat 及SOA 软件。
Apache Tuscany SCA 1.2 版实现了最新的 SCA 规范,包括:
- SCA 装配模型 V1.0
- SCA 策略框架 V1.0
- SCA Java 公用注解及 APIs V1.0
- SCA Java 组件实现 V1.0
- SCA Spring 组件实现 V1.0
- SCA BPEL 客户端及实现 V1.0
- SCA Web Services Binding V1.0
- SCA EJB Session Bean Binding V1.0
- 带有 SCA 域管理应用的改进的 SCA 分布域支持
- 对 JAXWS 注解的支持
- 改进且简化的 JMS 绑定
- 新的 Eclipse 插件以提供 Eclipse 环境下的 Tuscany 运行库与 Tuscany 加载器
- 与 Tomcat、Jetty、Geronimo 及 Websphere 集成的 Web 容器测试框架
它还实现了很多 SCA 规范尚未定义的特性,如下:
- 针对 DWR(Direct Web Remoting)、RSS 与 ATOM 种子、HTTP 资源、JSON-RPC、PUB/SUB 通知及 RMI 的 SCA 绑定
- 针对 OSGI、XQuery、BPEL、Widget 及各种动态语言如 Groovy、Python、Ruby 和 Javascript 的 SCA 实现类型
- 针对服务数据对象(Service Data Objects,即 SDO)、JAXB、XmlBeans、Axis2 的 AXIOM、JSON、SAXON、DOM、SAX 及 StAX 的数据绑定
该版本使用如下运行时进行了测试:
- Tomcat 5.5.20 和 Tomcat 6.0.14
- Jetty 6.1.3
- Geronimo 2.0.2
- WebSphere 6.1 fix pack 9
Apache Tuscany SDO 1.1 版包含如下新特性:
- 支持具有相同名字的属性和元素
- 在 Swing UI 中支持 DataObjects 的客户化数据绑定
它还针对现存功能进行了大量改进并修复了一些 bug。
InfoQ 采访了来自 IBM 的 Luciano Resende ,他对 Apache Tuscany 项目做出了很多贡献。
InfoQ:对于该版本新增的众多特性,你认为哪些最重要?
LR: SCA 用来构建分布式的组合应用,带有 SCA 域管理应用的新的 SCA 分布域支持允许你构建并部署你的解决方案到多个 SCA 节点上。这些节点可以运行在不同的平台和运行时(如 Geronimo、Tomcat 及 Jetty 等)上,或者仅仅运行在普通的 J2SE 上。通过 OSGI 的支持,用户现在可以在 OSGI 运行时上运行 Tuscany 和 SCA。新的 Tuscany 的 Eclipse 插件改善了开发者构建 SCA 应用的用户体验。它集成了 Tuscany 与 Eclipse 以将 Tuscany 运行时加到你的项目中;通过提供的代码辅助来进行组合编辑,并且可以直接从开发环境中运行组合应用。
InfoQ:能否描述 Tuscany 对 WS-BPELin 支持的改进计划?
LR: 在 Tuscany 主干上,我们刚刚完成了另一个里程碑以更好的集成 WS-BPEL 和 SCA 。我们现在支持将对 SCA 服务的引用作为 WS-BPEL 过程合作者的链接。Tuscany 使用 Apache ODE 作为一个参考的 WS-BPEL 引擎,同时利用了随这一发行版发布的部分 ODE。作为下一步要考虑的,下面的条目来自关于该主题的一次讨论:
- WS_BPEL 过程内省
- 对异步调用的更好支持
- 使用 SCA 组合替换 ODE 部署描述符
InfoQ:可否集中管理 SCA 配置?
LR: 在当前的 Tuscany 发布中无需绑定配置就能打包应用,可以在 SCA 域组合层次上定义绑定点和其他属性。SCA 域组合是一套组合文件用来包含这类信息(网络和绑定配置)。在这种情况下,SCA 域作为一个登记处,可以集中管理也可以分布管理,同时还能从网络上的不同来源跟踪 SCA 元数据。
InfoQ:该版本支持哪些立即可用的策略?
LR: 对于 Web Services 绑定,我们有认证、完整性和机密性策略。我们还提供了对使用 Java 容器实现的基于 JAAS 认证的支持。我们尚未实现基于 JAAS 的授权,因为这看起来更像是对 Java 资源的授权控制。
安全的 Big Bank 示例说明了这两者的组合:web services 绑定用来进行认证,然后将认证过的用户令牌传给 java 容器,接下来后者检查授权。
我们还支持日志策略。
InfoQ:能否更详细地介绍一下对 JMS 的支持?
LR: 对 JMS 的支持允许你在服务和引用上声明 JMS 绑定,配置 / 定义大量设置,如:JNDI URLs、初始上下文工厂、ConnectionFactory、JMS 头、使用的源和目的队列等等。至于其他细节,Tuscany 使用 ActiveMQ 作为其默认的 JMS 提供者,但是也可以配置以使用不同的提供者,因此一些细节依赖于所使用的提供者。
InfoQ:将来还会增加什么新特性呢?
LR: 这要依赖于 Tuscany 社区了,然而从当前的讨论来看,我们想出下面这些:
- 将 OSGi 提升为一等的 Tuscany 运行时环境
- 对业务集成( Business Integration,即 BPEL)更多的增强
- 根据 SCA 规范不断更新……
我们还有大量 Google Summer 的编码项目正在进行中,这会在以下领域推进 Tuscany 的功能:
- 与 Google Services 集成增强对 Web 2.0 的支持
- 与 Map/Reduce 的集成
- 移动领域——在 Android 上运行 Tuscany
此外,STP/SCA 子项目提供了大量工具以进行 SCA 开发,这能简化 Tuscany SCA 实现的使用。上个月他们发布了一个新的教程:SCA 组合设计器新手上路,它提供了对这些工具使用的详细讲解。
评论