dubbox生产者与消费者案例
一.首先要将dubbox添加到本地maven仓库
参考:
二.目录结构
三.生产者配置
applicationContext.xml
<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="dubbox-provider" />
<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://192.168.42.88:2181" />
<!-- 用rest协议在****端口暴露服务 -->
<dubbo:protocol name="rest" port="8091" />
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="com.chx.service.IDoSomeService" ref="iDoSomeService" />
<!-- 和本地bean一样实现服务 -->
<bean id="iDoSomeService" class="com.chx.service.impl.IDoSomeServiceImpl" />
</beans>
service接口
package com.chx.service;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.MediaType;
@Path("/dosome")
public interface IDoSomeService {
@GET
@Path("/dosomeService/{id}") //Rest风格
@Consumes({ MediaType.APPLICATION_JSON })
String dosomeService(@PathParam("id") Integer id);
}
实现类
package com.chx.service.impl;
import com.chx.service.IDoSomeService;
public class IDoSomeServiceImpl implements IDoSomeService {
@Override
public String dosomeService(Integer id) {
System.out.println("执行业务!业务Id:"+id);
return "doSome";
}
}
main方法加载配置类
package com.chx.service;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.io.IOException;
public class test {
public static void main(String[] args) throws IOException {
// 发布服务
ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
app.start();// 加载
System.out.println("服务发布成功...");
System.in.read(); // 让程序阻塞
}
}
四.消费者配置
applicationContext.xml
<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="dubbox-consumer" />
<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://192.168.42.88:2181" />
<!-- 消费服务 -->
<dubbo:reference interface="com.chx.service.IDoSomeService" id="iDoSomeService" />
</beans>
只保留接口不写实现,
main方法
package com.chx.service;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.io.IOException;
public class test {
public static void main(String[] args) throws IOException {
// 发布服务
ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
IDoSomeService iDoSomeService = (IDoSomeService)app.getBean("iDoSomeService");
iDoSomeService.dosomeService(99); //传递参数
}
}
五.执行结果
浏览器rest风格调用返回结果