网站地图
高级搜索
首页
技术论坛
博客
派计划
产品中心
资源中心
银弹在线
商城
goCom - SOA中国第一社区
SOA和WebService
|
面向构件
|
业务流程
|
EOS
|
综合技术
|
goCom吧
|
版务区
|
商务专区
SOA和WebService
|
面向构件
|
业务流程
|
EOS
|
综合
专家组计划
|
论坛版主计划
|
技术日讲师计划
Primeton EOS
|
Primeton BPS
OSOA专区
|
专题
|
技术日
|
活动
|
下载
推荐阅读
|
封面报道
|
特别报道
|
CIO锦囊
|
专栏
|
公司
|
银弹讨论
最新上架
|
银弹推荐
|
普通书籍
|
音像
|
护肤
|
生活
|
数码
goCom - 面向构件与SOA社区 讨论区
-
面向构件
SCA/SDO
SCA中国推进组
SDO中国推进组
OSOA规范讨论
银弹讨论
Tuscany
平台厂商
主题选项
点击展开
HOVER展开
--------
打印主题
[无发表权] 请登录或者注册
版主:
hongsoft
米布
wangfeng
liang_ma
julian_zzx
个人资料
Fabric3简要入门
#1楼
总分
19 分
财富
1118
威望
122
排名
:(
段位
对
Fabric3
的关注源于对
SOA
的关注。最近
SCA
这个概念可是很火啊,而且
Fabric3
的背景有
BEA
,(
Tuscany
背后是
IBM
),刚刚在上海结束的
BEA2007
发布了
WebLogic Server 10.3 Tech Preview
,其中
SCA
的实现就是基于
Fabric3
的。而且
Fabric3
现在在
codehaus
上,
codehuas
可是出品了不少精品啊,
XFire
、
Mule
、
Groovy
、
AspectWerkz
等等,凭这点也值得关注下。
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.2
,
0.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竞争。
References
http://fabric3.codehaus.org/
1月13日 15:36:46
SOA中国关键任务广受认可
SOA博客精英 万元奖金现已发送
IDC白皮书《软件商成长路线图》
软件开发2.0技术大会
Primeton BPS 频道火热上线
goCom积分调整
派计划:专业、权威、影响力
goCom户外:烧烤+游戏
waltbest
个人资料
Re: Fabric3简要入门
#2楼
总分
14 分
财富
46
威望
1
排名
:(
段位
ding
1月13日 16:51:09
SOA中国关键任务广受认可
SOA博客精英 万元奖金现已发送
IDC白皮书《软件商成长路线图》
软件开发2.0技术大会
Primeton BPS 频道火热上线
goCom积分调整
派计划:专业、权威、影响力
goCom户外:烧烤+游戏
[无发表权] 请登录或者注册
发表回复
账号
用户名
密码
登录
内容:
字体大小
xx-small
x-small
small
medium
large
x-large
xx-large
字体
Arial
Courier
Georgia
Helvetica
Impact
Verdana
字体颜色
#000000
#000033
#000066
#000099
#0000CC
#0000FF
#003300
#003333
#003366
#003399
#0033CC
#0033FF
#006600
#006633
#006666
#006699
#0066CC
#0066FF
#009900
#009933
#009966
#009999
#0099CC
#0099FF
#00CC00
#00CC33
#00CC66
#00CC99
#00CCCC
#00CCFF
#00FF00
#00FF33
#00FF66
#00FF99
#00FFCC
#00FFFF
#330000
#330033
#330066
#330099
#3300CC
#3300FF
#333300
#333333
#333366
#333399
#3333CC
#3333FF
#336600
#336633
#336666
#336699
#3366CC
#3366FF
#339900
#339933
#339966
#339999
#3399CC
#3399FF
#33CC00
#33CC33
#33CC66
#33CC99
#33CCCC
#33CCFF
#33FF00
#33FF33
#33FF66
#33FF99
#33FFCC
#33FFFF
#660000
#660033
#660066
#660099
#6600CC
#6600FF
#663300
#663333
#663366
#663399
#6633CC
#6633FF
#666600
#666633
#666666
#666699
#6666CC
#6666FF
#669900
#669933
#669966
#669999
#6699CC
#6699FF
#66CC00
#66CC33
#66CC66
#66CC99
#66CCCC
#66CCFF
#66FF00
#66FF33
#66FF66
#66FF99
#66FFCC
#66FFFF
#990000
#990033
#990066
#990099
#9900CC
#9900FF
#993300
#993333
#993366
#993399
#9933CC
#9933FF
#996600
#996633
#996666
#996699
#9966CC
#9966FF
#999900
#999933
#999966
#999999
#9999CC
#9999FF
#99CC00
#99CC33
#99CC66
#99CC99
#99CCCC
#99CCFF
#99FF00
#99FF33
#99FF66
#99FF99
#99FFCC
#99FFFF
#CC0000
#CC0033
#CC0066
#CC0099
#CC00CC
#CC00FF
#CC3300
#CC3333
#CC3366
#CC3399
#CC33CC
#CC33FF
#CC6600
#CC6633
#CC6666
#CC6699
#CC66CC
#CC66FF
#CC9900
#CC9933
#CC9966
#CC9999
#CC99CC
#CC99FF
#CCCC00
#CCCC33
#CCCC66
#CCCC99
#CCCCCC
#CCCCFF
#CCFF00
#CCFF33
#CCFF66
#CCFF99
#CCFFCC
#CCFFFF
#FF0000
#FF0033
#FF0066
#FF0099
#FF00CC
#FF00FF
#FF3300
#FF3333
#FF3366
#FF3399
#FF33CC
#FF33FF
#FF6600
#FF6633
#FF6666
#FF6699
#FF66CC
#FF66FF
#FF9900
#FF9933
#FF9966
#FF9999
#FF99CC
#FF99FF
#FFCC00
#FFCC33
#FFCC66
#FFCC99
#FFCCCC
#FFCCFF
#FFFF00
#FFFF33
#FFFF66
#FFFF99
#FFFFCC
#FFFFFF
范例 Example
[
更多...
]
版权归Primeton普元公司所有 沪ICP备05008205号
关于goCom
|
联系我们
|
联系普元
|
隐私权声明
|
XOOPS