分享

MyEclipse 中开发SCA应用入门 - 好高悟远 - ItEye技术网站

 gyb98 2011-04-03

MyEclipse 中开发SCA应用入门

SCA:service component architectur
这是一种面向服务的基础架构设计,方便了在此基础上实现SOA的应用。SCA只是一个规范,对这个规范的实现有多种,其中Apache的Tuscany SCA就是其中一种。
首先,我只是结合我自己的理解简单介绍一下SCA,然后在把我自己写的一个最简单的HelloWorld如何搭建起来的做一个描述。
借助Tuscany的实现描述SCA 运行时:
首先是运行环境:包括操作系统,虚拟机,容器等等。诚挚为Hosting Platforms
在此之上是运行时的Core 和Extension部分,这个设计是微内核的,Core就是这个核,Core提供的功能,运行时实现,以及提供Extension的机制。
在Core之外提供Extension:比如Apache tuscany 提供的SDO,DAS都是这种Extension。 这样一种相当于插件机制的设计增加了灵活性。
在Core和extension之上就是:Tuscany API,提供给开发者更多的方便。

在SCA中有几个很重要的概念:
Component:具有独立功能的程序模块。
Service:component提供给外部的服务。
Referrence:对其他服务的引用。
Composite:多个component的高一层次封装。
Wire:链接Referrence和component。
Promote:同一个composite内多个component之间的链接。
Domain: 一个composite是一个最简单的Domain。Domain是对n个composite组织的高一层次封装。

基本的概念就只描述这些了,下面看看如何把最简单的SCA HelloWorld运行起来。

1,到Apache官方网站下载Tuscany SCA binary package 和对应源码。
2,在MyEclipse中新建UserLibrary,把binary package下的jar包全部加入到其中,并关联下载的源代码到sca-all.jar
3,新建工程,并引入刚才建立的UserLibrary。
4,其实运行HelloWorld很简单:
建立接口:


Java代码 复制代码 收藏代码
  1. package Hello;
  2. import org.osoa.sca.annotations.Remotable;
  3. public interface IHello {
  4. public String show(String name);
  5. }


然后实现接口:
Java代码 复制代码 收藏代码
  1. package Hello;
  2. public class HelloImpl implements IHello{
  3. public String show(String name)
  4. {
  5. return "Hello"+name;
  6. }
  7. }


接下来就是要写一个Hello.composite 配置文件:
Xml代码 复制代码 收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <composite xmlns="http://www./xmlns/sca/1.0" name="hello">
  3. <component name="Hello"
  4. <implementation.java class="Hello.HelloImpl"/>
  5. <service name="Hello"
  6. <binding.ws uri="hello-there"/>
  7. <t:binding.jsonrpc uri="hello-nicer"/>
  8. </service>
  9. </component>
  10. </composite>

这个文件其实就对应了Composite ,component,service 等概念。比较容易明白。

还需要一个Client来调用这个composite:

Java代码 复制代码 收藏代码
  1. package Hello;
  2. import org.apache.tuscany.sca.host.embedded.SCADomain;
  3. public class HelloClient {
  4. public static void main(String[] args)
  5. {
  6. SCADomain domain=SCADomain.newInstance("hello.composite");
  7. IHello ihello= domain.getService(IHello.class, "Hello");
  8. if(ihello!=null)
  9. ihello.show("ccx");
  10. domain.close();
  11. }
  12. }


这个HelloClient从配置文件Hello.composite读取配置并建立了domain,然后或得Hello服务接口,并完成对服务的调用。

这个例子很简单,但也可以对SCA中一些最基本的概念有所了解。有了这个的基础上,可以再深入学习更多的东西了。

将持续关注SCA。and OSGI

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多