标准的框架模式:
1. 将parent、model、common、service、service-impl、dao、dao-impl分开打包。将功能模块化。
其中parent只负责存放jar包,其他项目继承parent。
common
control依赖model与service。只需要在pom.xml中依赖即可。
service-impl是具体处理业务的模块,依赖model、common、service、dao、dao-impl。
1. dubbo jar包依赖
未使用到montior,所以未导入该包。
由于dubbo底层使用是用netty实现,所以导入netty包。
需要注册zookeeper,导入zookeeper包。
2.启动zookeeper
下载zookeeper,更改zoo.cfg文件,在bin下启动服务端与客户端。启动成功如下:
3. provider端构建
(1)提供一个service层接口并写出该实现类。
(2) 写一个类,用来启动spring容器。
public static void main(String[] args) throws IOException {
ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext(
new String[]{"provider.xml"});
context.start();
System.in.read();
}
(3)配置xml
<!-- 提供方应用信息,用于计算依赖关系 ,-->
<dubbo:application name="provider"/>
<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
<dubbo:protocol name="dubbo" port="20880"/>
<!-- 内部注册bean -->
<bean id="sampleProviderService" class="com.provider.service.impl.SampleProviderServiceImpl"/>
<!-- 暴露出来,给别人调用,指向本地的bean -->
<dubbo:service interface="com.provider.service.SampleProviderService" ref="sampleProviderService" />
3. consumer端构建
(1)需要要provider的service层搬过来。
(2)配置consumer的xml
<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
<dubbo:application name="consumer" />
<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181" />
<!-- 表示引用一个服务,生成远程服务代理,可以像使用本地bean一样使用demoService
检查级联依赖关系 默认为true 当有依赖服务的时候,需要根据需求进行设置
check=false,表示关闭该服务启动时检查,
若是此时关闭掉服务提供者的服务器,此时启动客户端的服务器,可以正常启动, -->
<dubbo:reference id="sampleProviderService" check="false" interface="com.provider.service.SampleProviderService" />
(3)调用provider中的service。
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
new String[]{"consumer.xml"});
context.start();
SampleProviderService service = (SampleProviderService)context.getBean("sampleProviderService");
User user = service.getUser();
System.out.println(user.toString());
}
(4)调用成功,显示结果。