`

基于Tuscany的Web应用程序分析

    博客分类:
  • SOA
阅读更多
Tuscany下典型的Web架构:

乍一看,平淡无奇,这不就是我们常用的Web目录结构么?没错!

但玄机出在Web.xml和Calculator.composite上,下面我们分别看下这两个文件:

Web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web
Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>

<display-name>Apache Tuscany Calculator Web Service Sample</display-name>

<filter>
<filter-name>tuscany</filter-name>
<filter-class>org.apache.tuscany.sca.host.webapp.TuscanyServletFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>tuscany</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<welcome-file-list id="WelcomeFileList">
<welcome-file>calc.jsp</welcome-file>
</welcome-file-list>

</web-app>

这里使用了TuscanyServletFilter过滤器,此过滤器的作用我们会在后文提到。

Calculator.composite

<?xml version="1.0" encoding="UTF-8"?>
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
targetNamespace="http://sample"
xmlns:sample="http://sample"
name="Calculator">

<component name="CalculatorServiceComponent">
<implementation.java class="calculator.CalculatorServiceImpl"/>
<reference name="addService" target="AddServiceComponent"></reference>
<reference name="subtractService" target="SubtractServiceComponent"></reference>
<reference name="multiplyService" target="MultiplyServiceComponent"></reference>
<reference name="divideService" target="DivideServiceComponent"></reference>
</component>

<component name="AddServiceComponent">
<implementation.java class="calculator.AddServiceImpl"/>
</component>

<component name="SubtractServiceComponent">
<implementation.java class="calculator.SubtractServiceImpl"/>
</component>

<component name="MultiplyServiceComponent">
<implementation.java class="calculator.MultiplyServiceImpl"/>
</component>

<component name="DivideServiceComponent">
<implementation.java class="calculator.DivideServiceImpl"/>
</component>

</composite>
此文件类似Spring,是Tuscany的服务配置文件,在此文件中提供了组件、实现的声明及配置。

下面,再结合调用时序图,来详述Tuscany在此应用中的位置及作用。

由此时序图可知,整个流程如下:

1、应用服务器启动;

2、客户端访问calc.jsp页面,服务器调用Web.xml中的配置TuscanyServletFilter过滤器;

3、在TuscanyServletFilter过滤器中,首先得到一个WebAppServletHost实例,WebAppServletHost是在Web应用环境中使用的Tuscany功能提供者;

4、在WebAppServletHost中,得到一个SCADomain实例,并将之放入ServletContext上下文中,以后可藉由相应的key得到此SCADomain实例;

5、calc.jsp中成功取得SCADomain实例;

6、通过SCADomain实例取得CalculatorServiceComponent组件;

7、调用CalculatorServiceComponent组件的各种业务方法实施计算。

这一个完整的过程,演示了Tuscany在一个Web应用中所充当的角色,在某种意义上Tuscany和Spring是相同的,只不过粒度不一样,

Spring注重的是bean的管理,是技术层面的,粒度相对较细;而Tuscany关注 则是业务组件的管理,是业务层面的,粒度相对较粗。

从软件重用角度讲,业务重用比技术重用更加受欢迎,操作起来也更加容易。业务重用是趋势。现在的SAAS热潮更加证明,软件即服务的

时代已经到来。
分享到:
评论

相关推荐

    基于Tuscany SCA的分布式SCA应用的设计与实现.pdf

    总结而言,文件中提到的分布式SCA应用的设计与实现,是基于Tuscany SCA框架对SCA规范的具体应用和创新。该分布式模型展现了分布式系统在云端部署、易于实现、逻辑整合和实际应用中的特点和优势。通过这些详细的理论...

    一种基于Tuscany SCA的分布式应用模型.pdf

    文章中描述的“分布式应用模型”指的是采用Tuscany SCA构建的应用程序模型。该模型特别强调了“单云多结点”的概念,其中“单云”指的是一个集中的云环境,而“多结点”则指的是分布在这个云环境中的多个处理单元或...

    SOA 下的基于Axis2和Tuscany的web service

    SDO是一种统一的数据访问API,允许应用程序以统一的方式处理不同类型的数据源,而ESB则是SOA的核心组件,用于连接和集成不同的服务。 在基于Axis2和Tuscany的Web Service实现过程中,首先需要理解Web Service的基本...

    tuscany发布webservice实例

    发布后,服务将可供其他应用程序通过网络调用。 6. **测试Web服务** 发布完成后,我们需要验证Web服务是否正常工作。这通常通过发送一个测试请求来完成,可以使用像cURL这样的命令行工具,或者专门的SOAP客户端,...

    apaceh -TUSCANY 源码

    SCA是一种用于构建和部署分布式应用程序的规范,它允许开发者使用多种编程语言和数据格式来创建、组合和服务。Tuscany源码的分析有助于深入理解SCA的工作原理以及如何在实际开发中应用这一框架。 SCA的核心概念包括...

    Tuscany SCA in Action

    本书讨论了如何使用SCA构建面向Web 2.0的应用程序,包括处理AJAX请求和利用Web服务API。 ### 数据表示与转换 数据表示和转换是SCA应用中的关键环节,尤其是当组件使用不同的数据格式进行交互时。书中提供了实用的...

    tuscany1.6.2

    2. **服务数据对象(SDO)**:Tuscany也实现了服务数据对象,这是一种数据抽象层,允许应用程序以统一的方式处理各种类型的数据源,增强了数据的灵活性和互操作性。 3. **模块和组件**:在Tuscany中,应用程序被...

    tuscany的一点文档

    Tuscany是一个开源的服务组合架构(Service Component Architecture, SCA)实现,它提供了一种方式来管理和控制应用程序中与业务逻辑正交的方面,比如日志、监控和安全性。策略在Tuscany和SCA中扮演着关键角色,它们...

    Tuscany In Action书

    通过在SCA容器中组装这些组件,可以创建出复杂的应用程序。本书详细介绍了如何使用SCA组件,包括其生命周期管理、数据绑定、事务处理等方面的知识。 #### 复合应用的构建 复合应用是由多个SCA组件组成的集合,它们...

    Tuscany的开源项目Tuscany_sdo(C++版)

    Tuscany的目标是促进SOA的普及,通过提供灵活、可扩展的基础设施来构建和管理分布式应用程序。 **Tuscany SDO (C++版)** Tuscany Service Data Objects (SDO) 是该项目的一个重要组成部分,它是一个标准的数据抽象...

    Apache Tuscany SCA 用户指南StepByStep

    7. **测试与调试**:教程可能涵盖了测试SCA组件和应用程序的方法,以及如何利用Tuscany提供的工具进行调试。 8. **案例研究**:通过实际的步骤和示例,展示如何从零开始构建一个完整的SCA应用,这有助于巩固理论...

    tuscany-das&sdo&distribution-all.zip

    Tuscany DAS的主要目标是提供一个统一的接口,以便应用程序能够跨多种数据源(如数据库、文件系统或Web服务)透明地访问和操作数据。它支持JDBC、JCA、JDO、JPA等标准,帮助开发者减少与不同数据源集成时的复杂性。 ...

    Tuscany SCA与Spring、Hibernate整合实例-简洁方法

    **SCA(Service Component Architecture)服务组件架构**是Apache Tuscany项目的一部分,它是一种用于构建分布式应用程序和服务的开源框架。Tuscany SCA提供了一种声明式的方式来组合和管理服务,使得开发者能够关注...

    SOA之SCA导航-Apache Tuscany篇

    Apache Tuscany是Apache软件基金会开发的一个开源实现SCA的项目,它提供了一个全面的SOA平台,用于构建、部署和管理分布式应用程序。 **1. 使用命令行构建计算器应用** 在Apache Tuscany中,构建计算器应用通常...

    apache-tuscany-sca-1.6.zip

    Apache Tuscany SCA(Service Component Architecture)是一个开源项目,由Apache软件基金会维护,它提供了一个框架和中间件,用于构建、部署和管理分布式应用程序。SCA是一种标准,旨在简化服务导向架构(SOA)的...

    Tuscany实战源代码

    Apache Tuscany是一个开源的Service Component Architecture (SCA)实现,它提供了构建分布式、跨平台应用程序的框架,特别适用于企业级服务导向架构(SOA)的开发。 Tuscany项目的核心目标是简化服务组件的创建、...

    apache-tuscany-sca-1.6.2

    Apache Tuscany SCA(Service Component Architecture)是一个开源框架,由Apache软件基金会开发,用于构建分布式应用程序和服务。SCA是一种标准,它定义了一种模型来组合、管理和部署服务及组件,使得开发人员能够...

    Apache tuscany SCA实例

    Apache Tuscany是Apache软件基金会的一个开源项目,它实现了Service Component Architecture(SCA,服务组件架构),这是一种用于构建和集成分布式应用程序的规范。这个实例可能是关于如何使用Apache Tuscany来开发...

Global site tag (gtag.js) - Google Analytics