Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐:
搜索:
您的位置: Linux安全网 > Linux集群 > Architecture > » 正文

TuscanySCA3-使用SCA组件

来源: SpringsFeng 分享至:

每个组件的的实现均提供了组件的业务逻辑,通过implementation type指定组件实现的所用的技术。

1. 实现SCA组件

(1) Implementation Type

<composite name="cart"
....>
<component name="ShoppingCart" >
<implementation.java class="com.tuscanyscatours.impl.ShoppingCartImpl" />
....
</component>
<component name="Payment"
xmlns:pp="http://www.tuscanyscatours.com/Payment">
<implementation.bpel process="pp:Payment" />
....
</component>
</composite>

SCA规范定义了默认的Java实现类型:BPEL, C++,C,COBOL,Spring,.war,EJB,.ear,同时SCA还提供了扩展点用

与客制化定义自己的实现类型。

(2) 配置SCA组件使用组件定义

该配置文件是一个以.composite结尾的XML文件,一个相同的SCA组件实现可以被不同的组件用不同的配置方式

进行配置,如附件中:汽车租赁组件实现定义了一个minAge属性用于将组件实现定义成适合不同的应用场合。

(3) 发现或定义组件类型

SCA使用两种不同的途径去发现和定义组件的组件类型,依赖于底层的实现技术是否提供了便利用于编程式的验证

它的实现类型(即:Introspecting).对于支持Introspection的实现类型(JAVA,BPEL),SCA定义了规则用于获取

组件实现类型, 而对不支持Introspecting的实现类型,组件类型的定义必须提供一个但单独的XML文件(With

Extension:.componentType )。例如下面的代码没有使用SCA 注解:

public class AirportCodes {

public String getAirport(String code) {
if ("AAA".equals(code)) return "Anaa";
else if ("AAB".equals(code)) return "Arrabury";
// other airport codes and cities would follow here
else return null;
}
}

此时不需要提供组件类型定义文件,因为Tunscany能够通过实现类型自动获取组件类型,等价与下面的XML文件:

<componentType xmlns="http://www.osoa.org/xmlns/sca/1.0">
<service name="AirportCodes">
<interface.java interface="com.tuscanyscatours.AirportCodes" />
</service>
</componentType>

2. 使用组件去提供服务

(1) 定义服务:@Service注解

package com.tuscanyscatours.usingsca.impl;
import com.tuscanyscatours.Bookings;
import org.osoa.sca.annotations.Service;
@Service(Bookings.class)
public class TripBookingImpl implements Bookings {
....
public String newBooking(String trip, int people) {
....
}
}

package com.tuscanyscatours;
import org.osoa.sca.annotations.Remotable;
@Remotable
public interface Bookings {
String newBooking(String trip, int people);
}

如果组件实现上没有注解@Service,则SCA默认组件实现拥有所有实现的接口的服务,这些服务拥有注解:

@Remotable;而如果接口拥有注解:@Remotable,则将忽略实现类上的@Service注解。

总结: SCA将服务的定义委托给组件的实现并且允许每个组件实现类型用自己的方式去处理,因为SCA需

要所有的实现类型支持相同的服务和组件定义语义并且可以正常工作,而且这些语义是内嵌在SCA的组件

类型的定义中的。这种一致性保证了所有的SCA服务和组件可使用相同的方式进行配置和组合,而不管是

使用哪一种技术来实现组件的,reference和properties也采用的是这种思想。

(2) SCA种接口定义


Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史