Tuscany

Tricks to extend your own Tuscany Binding

扩展Tuscany binding 的注意事项

最近在琢磨着整个BlazeDS的SCA binding出来,Tuscany 用的顺手了,自然就用Tuscany 来做SCA 实验。虽然因为从BlazeDS 中扒代码出来遇到了点困难,但是扩展Tuscany Biding 的思路已经理清,所以先写这么一篇来灌水。本文不涉及BlazeDS 的部分,只是列出几个兄弟在实现Tuscany Biding 中遇到的容易被忽略的地方。

0/ targetNamespace 在各处要保持一致

其实理由很简单,目标命名空间一致才能找到东东嘛。但问题是这个targetNamespace 分散在各处,而又没有统一的维护工具,目前的IDE 工具做的也不够好。嗯,当然也可能是我比较圡,没找到好用的工具。我的case 比较简单,就三处有targetNamespace:composite 配置文件,/META-INFO/services底下的ValidationSchema 和 StAXArtifactProcessor。

1/ 是否真有必要实现StAXArtifactProcessor

如果扩展的binding只要配置一些基本的属性,完全可以用 org.apache.tuscany.sca.assembly.xml.DefaultBeanModelProcessor 来完成配置的解析,没有必要实现自己的StAXArtifactProcessor。比如,我的就一个uri 要配置,DefaultBeanModelProcessor 完全可以做这事了。注意:此项配置要保留,否则会杯具的。

2/ 尽量提供ValidationSchema

ValidationSchema 是用来保证Binding 使用者正确使用你的扩展的校验机制。如果提供了足够多的校验,并且提示信息都很友好,使用者很容易就能完成一个自我学习的过程。

3/ 实现ModuleActivator 不是必须的

ModuleActivator 是模块加载过程的第一步。如果扩展模块在加载过程中不作什么特殊动作,比如注册扩展点,完全可以不提供自己的ModuleActivator,用默认的就可以了。

4/ 心思细致

自定义扩展模块时必须要心思细致,因为有太多的配置,而且都是约定性的。

ps: 推荐两个参考资料