网站地图
  
  高级搜索
  首页   技术论坛   博客 派计划   产品中心   资源中心   银弹在线   商城  





Fabric3简要入门    
#1楼
给作者发送短消息 给作者发送短消息 实名会员 
查看用户其他信息
总分 19 分
财富 1118 goCom币
威望 122
排名 :(
段位 新手必读
Fabric3的关注源于对SOA的关注。最近SCA这个概念可是很火啊,而且Fabric3的背景有BEA,(Tuscany背后是IBM),刚刚在上海结束的BEA2007发布了WebLogic Server 10.3 Tech Preview,其中SCA的实现就是基于Fabric3的。而且Fabric3现在在codehaus上,codehuas可是出品了不少精品啊,XFireMuleGroovyAspectWerkz等等,凭这点也值得关注下。
SCA的概念就不多说了,本文关注的是如何用Fabric3开发最简单的SCA应用,用的是Calculator的例子。Fabric3和Tuscany不约而同的选了这个作为例子,不知道是历史渊源呢还是Calculator的典型性,有趣的问题:)。

废话不多说,先看代码组织结构图
编译必须的库(Eclipse: properties/Java Build Path)

环境准备好了,下面开始编写代码。

先看看我们要组织的SCA结构,这里为了减少本文篇幅只声明两个component,其余可以类似添加:

<?xml version="1.0" encoding="UTF-8"?>
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" 
           xmlns:fabric3
="http://fabric3.org/xmlns/sca/2.0-alpha"
           name
="CalculatorComposite"
           autowire
="true">
    
<component name="calculator">
        
<implementation.java class="calculator.CalculatorServiceImpl"/>
    
</component>
    
<component name="adder">
        
<implementation.java class="calculator.AddServiceImpl"/>
    
</component>
</composite>
很简单,只有两个component。首先看CalculatorServiceImpl:
public class CalculatorServiceImpl implements CalculatorService {
    
private AddService addService;
    @Reference
    
public void setAddService(AddService addService) {
        
this.addService = addService;
    }
}
很简单,仅有一点需要说明,@Reference是org.osoa.sca.annotations.Reference,负责组装component。注意composite配置中的autowire="true",在calculator里面并没显示的添加对adder的引用。另外还有两个annotation可以关注下,@Init和@Destroy,类似Junit里的setup和teardown,在component的每个方法调用前后执行些初始、善后的工作。
AddService和AddServiceImpl很简单,没什么好说的。
下面是CalculatorClient,让我们来看看Fabric3的客户端API和Tuscany有什么不同。
public class CalculatorClient {
    
public static void main(String[] args) throws Exception {
        Domain domain 
= new Domain();
        URL url 
= Thread.currentThread().getContextClassLoader().getResource("calculator.composite");
        domain.activate(url);
        CalculatorService calculator 
= domain.connectTo(CalculatorService.class"calculator");
        System.out.println(
"0.2 + 0.6 = " + calculator.add(0.20.6));
    }
}
怎么说呢,除了用了不同的方法签名之外和Tuscany好像大同小异:),都是先建立domain,然后拿到component进行操作。当然建立domain进行装配这一过程很多细节还是值得一挖的,本文限于主题和篇幅不去涉及这些主题,(关键是俺能力有限,挖不深:))。
代码准备好了,下面来运行下。
这里需要注意的是,光上面四个jar不足以运行Fabric3的例子,还需要Development Runtime中的/boot和/system两个文件夹下的内容,层次结构如上图所示,放在工程目录下就行了。可以在http://fabric3.codehaus.org/Downloads下载Development Runtime,目前的版本是0.3。
然后再次编译运行,打印出结果,运行顺利通过,OK。 
本文只涉及了calculator和adder两个component,其余三个操作各位同学可以做个练习J 还有文中提到的@Init和@Destroy也可以同时尝试下,更深入的主题还需要不断的探索。

备注
Fabric3是另一个SCA的实现(http://fabric3.codehaus.org/)。写这篇东东是为了介绍除Tuscany之外的SCA实现供大家参考,现在江湖中Tuscany很是流行,但毕竟,一枝独秀不是春,百花齐放春满园,拿Fabric3来比较下竞争下,不是要弄它个血雨腥风,而是为了江湖能够更和谐。不过老实说,在组织这篇东东的过程中,确实为非技术性的因素所困扰――Fabric3在文档方面确实非常非常缺乏。如果这点不改进的话,恐怕很难和Tuscany竞争。
 

Re: Fabric3简要入门    
#2楼
给作者发送短消息 给作者发送短消息  
查看用户其他信息
总分 14 分
财富 46 goCom币
威望 1
排名 :(
段位 新手必读
 




发表回复
账号用户名   密码   登录
内容:url email imgsrc image code quote
范例 Example
bold italic underline linethrough   


 [更多...]