【IT168 SOA文档】
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组合设计器新手上路,它提供了对这些工具使用的详细讲解。