1、创建一个接口和该接口的实现类,并在接口下随便声明一个方法,而且要在实现类中实现方法
还有一个重要的:要在接口定义的上面加上@Remotable属性
<例子>:
@Remotable
public interface BusinessService
@Remotable
public interface ProductService
2、配置composite文件和application的xml文件:
在composite文件中配置一个<service>,
1)该元素有两个属性要配置,一个为name还有一个是promote
name:服务名,自己定义
promote:组件名,选取该文件下的一个组件,该组件的name属性要相同,
并且该组件下有一个元素<implementation.spring
location="spring配置文件名即:application-context.xml" />
2)该元素有两个子元素
<interface.java interface="所定义的接口名" />
<binding.ws uri="该名字可以乱取,这个只是一个服务访问的uri地址,一个定义为services/任取Service" />
<例子>:
<?xml version="1.0" encoding="UTF-8"?>
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
targetNamespace="http://basecrm/business"
name="business">
<service name="businessService" promote="businessSpring">
<interface.java interface="com.huawei.basecrm.service.BusinessService" />
<binding.ws uri="services/businessService" />
</service>
<component name="businessSpring">
<implementation.spring location="application-context.xml" />
</component>
</composite>
3、在composite文件配置后,需在spring配置文件中配置一个元素<sca:service>
该元素是与composite文件的服务相对应,并将tuscany与spring完好的联系起来
有三个属性
1)name:对应与composite文件<service>元素中的属性,两个必须要相同
2)type:是接口名字,与composite文件中的<interface.java>元素的interface
属性相同,都是同一个接口
3)target:对应与该spring配置文件一个<bean>元素,与<bean>元素的id属性相同
<例子>:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:sca="http://www.springframework.org/schema/sca"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/sca http://www.osoa.org/xmlns/sca/1.0/spring-sca.xsd">
<sca:service name="businessService"
type="com.huawei.basecrm.service.BusinessService"
target="businessImpl"/>
<bean id="businessImpl" class="com.huawei.basecrm.service.BusinessServiceImpl">
</bean>
</beans>
4)上面就完成了spring和tuscany的结合,并可以发布服务成功
5)再重新建一个项目,将上面发布的服务打开,将开始在上面那个项目中的接口重新导入到
该项目中,不过最好还是将该接口打包。
打包步骤:1)cmd
2)找到该接口的.class文件所在的目录,最好是定在classes目录下
3)jar cvf *.jar 包名.接口名.class
将该包放在WEB-INF/lib中,并添加到项目中去
6)在新项目中创建一个新的接口和新接口的实现类,并要求该接口和实现类要包含jar包中的接口下的所有方法,
在实现类中定义一个原有接口的一个属性
并在该属性上加上@Reference属性,表示从外面引用的服务将会注入到该属性上,并可以通过
该属性调用原有项目中的方法和方法的一些实现
<例子>:
@Reference
private ProductService productService = null;
@Reference
private BusinessService businessService = null;
7)为新项目配置composite文件,该文件要配置一个组件<component>
属性:name可以随便取
子元素:<implementation.java class="实现类名" />配置一个实现类,该实现类是和(6)中的接口必须是要
同一个
<reference name="(6)中的接口对象" > 该元素还有两个子元素
<interface.java interface="" /> 导入的接口名
<binding.ws uri="" /> 发布服务的uri地址
<例子>:
<?xml version="1.0" encoding="UTF-8"?>
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
targetNamespace="http://basecrm/customer"
name="customer">
<component name="productServiceComponent" >
<implementation.java class="com.huawei.basecrm.service.ProductManageImpl" />
<reference name="productService" >
<interface.java interface="com.huawei.basecrm.service.ProductService" />
<binding.ws uri="http://localhost:8080/product/services/productService" />
</reference>
<reference name="businessService" >
<interface.java interface="com.huawei.basecrm.service.BusinessService" />
<binding.ws uri="http://localhost:8080/business/services/businessService" />
</reference>
</component>
</composite>
8)再再新项目中配置spring文件,即在application-context.xml文件中配置相关内容
由于在项目中引用了两个服务,需要在spring中配置两个引用
<sca:refence name="" type="" />
name:随便取
type:导入的包名
再定义一个bean元素,将两个引用注入到该项目中的实现类的两个属性中
<bean id="" class="" >
<property name="" ref="" />
</bean>
id:随便取
class:为新项目中的实现类名
name:跟实现类中的两个接口的对象名要一致
ref:即要跟上面<sca:refence>元素中的name属性值相同
<例子>:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:sca="http://www.springframework.org/schema/sca"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/sca http://www.osoa.org/xmlns/sca/1.0/spring-sca.xsd">
<sca:refence name="businessServiceComponent"
type="com.huawei.basecrm.service.BusinessService">
</sca:refence>
<sca:refence name="productServiceComponent"
type="com.huawei.basecrm.service.ProductService">
</sca:refence>
<bean id="productManage" class="com.huawei.basecrm.service.ProductManageImpl">
<property name="productService" ref="productServiceComponent"></property>
<property name="businessService" ref="businessServiceComponent" ></property>
</bean>
</beans>
9)创建一个测试实现类
在该类定义一个SCADomain对象 该对象是用来读取composite文件
再用该对象调用getService方法
<例子>:
SCADomain domain = SCADomain.newInstance("META-INF/composite/customer.composite");
ProductManageImpl manage = domain.getService(ProductManageImpl.class, "productServiceComponent");
getService方法里的两个参数分别为一个为class对象,该对象是定义的实现类的class对象,另一个是composite文件
中的组件的name属性值,再可以通过manage调用实现类中的方法。
分享到:
相关推荐
在这个实例中,我们将探讨如何将Tuscany SCA与两大主流框架——**Spring**和**Hibernate**进行整合,以实现更加简洁高效的应用开发。 **Spring框架**是Java领域最知名的依赖注入(DI)和面向切面编程(AOP)框架之...
根据提供的文件信息,本文将详细解析Tuscany与Spring、Axis整合的相关知识点,以及如何解决在整合过程中可能遇到的jar包冲突问题。 ### Tuscany简介 Tuscany项目是Apache软件基金会的一个顶级项目,专注于提供一个...
Apache Tuscany是Apache软件基金会的一个开源项目,它专注于服务组件架构(Service Component Architecture, SCA)的实现。SCA是一种用于构建和部署分布式应用程序的规范,它允许开发者使用多种编程语言和数据格式来...
Apache Tuscany是Apache软件基金会的一个开源项目,它实现了Service Component Architecture(SCA,服务组件架构),这是一种用于构建和集成分布式应用程序的规范。这个实例可能是关于如何使用Apache Tuscany来开发...
【Tuscany发布Web服务实例详解】 Tuscany项目是一个开放源码的SOA(Service-Oriented Architecture,面向服务架构)实现,由Apache软件基金会维护。它提供了一个灵活、可扩展的框架来构建和部署分布式服务。在这个...
组件是服务的基本单元,可以是独立的业务逻辑,而模块则是一组组件和服务的集合,它们共同组成一个可部署的单元。 4. **绑定和接口**:组件通过接口与外部世界通信,而绑定则定义了组件如何通过不同的通信协议(如...
【Tuscany与SCA策略】 Tuscany是一个开源的服务组合架构(Service Component Architecture, SCA)实现,它提供了一种方式来管理和控制应用程序中与业务逻辑正交的方面,比如日志、监控和安全性。策略在Tuscany和SCA...
**Tuscany开源项目概述** Tuscany是一个由Apache软件基金会维护的开源项目,它致力于提供一个服务导向架构(Service-Oriented Architecture, SOA)的实现,支持跨平台、跨语言的服务集成。Tuscany的目标是促进SOA的...
Tuscany架构 Tuscany架构.jpg Tuscany架构.jpg
Apache Tuscany SCA(Service Component Architecture)是一个开源框架,由Apache软件基金会开发,用于构建分布式应用程序和服务。SCA是一种标准,它定义了一种模型来组合、管理和部署服务及组件,使得开发人员能够...
Apache Tuscany SCA(Service Component Architecture)是Apache软件基金会开发的一个开源项目,它提供了一个用于构建、部署和管理服务的框架。SCA是一种服务导向架构(SOA)标准,旨在简化不同技术间的互操作性,使...
《Tuscany SCA在行动》一书深入探讨了Service Component Architecture(SCA)与Apache Tuscany项目,这是IT领域内对服务组件架构及其实现的重要研究资料。以下是基于标题、描述、部分目录和标签生成的相关IT知识点:...
tuscany wsdl2java tools
5个代码例子使用的是 Tuscany1.5版本。请在官网下载jar包。 下载地址:http://archive.apache.org/dist/tuscany/java/sca/1.5/apache-tuscany-sca-1.5.zip 5个例子从不同的角度讲解了tuscany的整体架构思想。文档...
3. **模块和域**:Tuscany中的模块(Composites)是服务组件的集合,它们可以包含其他模块,形成层级结构。域(Domain)则是运行时环境,负责管理所有模块和服务的生命周期。 4. **服务组合**:通过Tuscany,你可以...
### 使用Spring Framework 设计和开发 SCA 组件 #### 一、引言 随着企业级应用的日益复杂,开发者们面临着越来越大的挑战。为了更好地管理这些复杂性,服务组件架构(Service Component Architecture, SCA)作为一...
Apache Tuscany SCA(Service Component Architecture)是一个开源项目,由Apache软件基金会维护,它提供了一个框架和中间件,用于构建、部署和管理分布式应用程序。SCA是一种标准,旨在简化服务导向架构(SOA)的...
### Tuscany-SDO-学习笔记 #### 1. SDO基础知识 ##### 1.1 创建DataObject **1.1.1 动态定义类型,然后创建DataObject** 在这一节中,我们将探讨如何通过动态定义类型来创建DataObject。这种方式允许我们在运行...