发表于: 2017-02-26 23:33:36
1 1626
今天完成的事情:
1、学习SCA和Tuscany知识
2、研究项目代码
明天计划的事情:
继续研究萝卜多代码
遇到的问题:
1、早上还能正常访问,到了晚上访问报错了:
又返回了空数据:
好像开发机上的数据库不能访问了:
收获:
1、昨天啰里啰嗦自己理解都不太明白,今天又看一遍比昨天好点了,就重新总结一下:
先说服务端,组合构件利用了tuscany工厂,是server.composite文件
组合构件的名字叫CarrotsHomeComponent,接着构件引用了一个配置文件
在这个配置文件中配置引用了其他组件,看一下引用的professionService组件:
这里target设置为professionService,即是引用professionService组件,而professionService组件的配置在server.composite文件并同时绑定为RMI服务:
<interface.java/>指向的就是ProfessionService接口,这个就是透露给外部访问的接口;<scallop:binding.rmi/>配置了RMI服务端的ip和端口号、RMI服务的服务名称serviceName,以供外界访问的名字。
这里用到了scallop,在scallop.properties文件中配置了scallop参数:
这里用到了开发机的一个数据库:
开发机ip是120.92.4.210 ,需要本地修改一下hosts:
scallop.resource.center指向开发机,开发机上的一个数据库resources,其中resources表有一条数据:
服务端注册一个远程RMI,registryName为profession-carrots-home-service-rmi对应的是carrots.home.service:10528,这个正是professionService配置的RMI服务端的ip和端口号,后面客户端访问的就是这个。
再来看WEB客户端
WEB-INF/spring/applicationContext-client.xml中
professionService指向了service层暴露给外部访问的接口,这里用到了client.composite的配置,看一下:
客户端组件也通过scallop绑定了远程RMI,registryName正是注册的profession-carrots-home-service-rmi,开发机数据库中对应的carrots.home.service:10528,这样WEB层就可以访问到service层数据了
这里还要注意一点,<implementation.java/>指向的是ProfessionSCAClient类,这个类是在core层中的,而昨天也正是分析到这里卡住了,ProfessionController中调用getIdsByDynamicCondition方法最终正是调用了ProfessionSCAClient中的方法
2、接昨天的继续分析ProfessionService中的代码:
243行和246行调用了getIdsByDynamicCondition方法,这个方法的具体实现昨天一直没找到,今天终于找到了,在commons-dao-util-0.0.1.jar包下BaseDaoServiceImpl实现类中:
用到了反射注解之类的,挺复杂,不过这不是我们关注的重点,只要知道最后得到了id列表就可以了,继续往下分析
258行调用了getObjectsByIds方法,这个方法的具体实现在ProfessionServiceImpl类中:
主要一句调用了dao的getList方法,这个方法又是一个jar包下的方法,具体实现不管,知道调用它得到了profession列表。
再往下:
获得职位标签列表:
下面通过职位列表获取公司id列表,并去除重复的id:
再通过公司id列表得到公司列表:
通过公司id列表还能得到公司行业id列表和公司行业列表:
明天继续
评论