发表于: 2017-11-02 22:29:09
2 874
今日完成:
昨天的demo完成的很费劲,且只是本地自己调用自己,并没有像RMI一样实现客户端与服务端的分离,但是因为目前概念还是很模糊,先缕一缕重要的概念,待会儿能方便的往下做.
先说下SCA和SOA
SOA:Service Oriented Architecture 面向服务的体系结构。
SOA是一种设计方法,其中包含多个服务,而服务之间通过配合最终提供一系列功能。
一个服务通常以独立的形式存在于操作系统进程中。
服务之间通过网络调用,而非采用进程内调用的方式进行通信
SCA:Service Component Architecture 服务组件体系结构
顾名思义,服务组件体系结构是一个组件模型。面向服务的粗粒度构件被表示为组件。组件描述它们所提供和所依赖或引用的服务。组件还指向提供服务实现的代码块。组件通过连接联系在一起。组件可以通过公开可配置的属性来定制它们的行为。策略和服务质量意图用于扩展服务或引用(称为交互意图)以及组件(称为实现意图),以便配置由 SCA 运行时提供的附加语义。
概念很是晦涩难懂,看了一上午,贴2张图,大致就是这么个原理了.
OK,正式开工!
这里要注意2个问题,一个是像实现RMI一样分为服务端和客户端,二是Spring和Tuscany集成整合的问题.
先解决第一个..
配置文件和主启动程序如下
一次报错说没有@Remotable
这个时候机智的查了一下官方的中文API
http://tuscany.apache.org/sca.data/SCA_JavaAnnotationsAndAPIs%E4%B8%AD%E6%96%87%E7%89%88.pdf
填上注解
二次报错
机智的猜测service 的name要保持注解下类名称一致
修改
三次报错
然后像一个弱智 弄了4小时 最后发现缺少依赖JAR包
启动成功
监听端口查看
建立客户端调用测试
服务端成功打印
那么之后就是在复盘前最深的坑了,Spring 集成 Tuscany,Tusacny版本停留在了12年左右的2.0.1在这里我使用的是2.0,然而Spring却是日新月异版本不断更迭,那么是否会造成JAR包无法使用的问题呢?我的猜测是肯定的!
这里我们先查看一下Spring在2012-2013左右的版本,大都集中在3.2左右
查看一下依赖关系,呵呵,非常明确的告诉了你3.2也别想了最多3.0.5了,更别提4.1.3了,别瞎忙活了!
接着不断尝试,从下午1点到晚上11点时,终于测试成功!
第一步,因为待会儿我们服务端运行的是我们的XXXXX.composite配置文件,所以我们要把Spring的配置文件加载到我们Tuscany配置文件中.
第二步,在spring配置文件中注册Tuscany服务器以及对应的接口实现,这里因为在接口实现类中已经注入IOC,直接拿就行了.(注意点 DTD文件约束的加入)
第三步,启动我们的服务端
客户端调用成功!
说下几个坑,第一约束文件引入,第二服务器名称一致性,第三JAR相关依赖和支持版本问题,第四还是@Remotable注册远程接口,第五Javen Bean的序列化.
后面的就轻车熟路了,这里客户端调用的方法和任务8相同
客户端老样子
Controller就改了一个用来测试
启动2个Tomcat 2个Tuscany 启动nginx
测试两个Tomcat窗口
访问80
关掉18080和9999端口对应程序,测试OK
提交task9
明日计划:准备复盘,还有之前落下的没实现的和JAVA基础IO和多线程那块,补!
问题:无
收获:解决问题的效率,速度,对即将发生问题的预处理,每天都在提升,经历的是痛苦,收获的却是快乐,或许这就是程序员吧!
评论