整个过程大致是这样的
1.注册中心使用zookeeper,地址为192.168.192.128:2181!
2.首先服务方
所在的服务器是127.0.0.1:8081
服务方提供的接口:
public interface ITestTbService { void insertTestTb(TestTb testTb); }
接口的实现类
@Service("testTbService") @Transactional public class TestTbServiceImpl implements ITestTbService { @Resource private TestTbMapper testTbMapper; @Override public void insertTestTb(TestTb testTb) { testTbMapper.insertSelective(testTb); //throw new RuntimeException(); } }
dubbo-provider.xml
<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-4.0.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 提供方应用信息,用于计算依赖关系 --> <dubbo:application name="service-provider"/> <!-- 使用zookeeper注册中心暴露服务地址 --> <dubbo:registry address="192.168.198.128:2181" protocol="zookeeper"/> <!-- 用dubbo协议在20880端口暴露服务 --> <dubbo:protocol port="20880" name="dubbo"/> <!-- 声明需要暴露的服务接口 --> <dubbo:service interface="com.winner.service.ITestTbService" ref="testTbService"/> </beans>
3.服务消费方
所在的服务器是127.0.0.1:8080
<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-4.0.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 消费方应用信息,用于计算依赖关系 --> <dubbo:application name="service-consumer"/> <!-- 使用zookeeper注册中心暴露服务地址 --> <dubbo:registry address="192.168.198.128:2181" protocol="zookeeper"/> <!-- 声明需要暴露的服务接口 --> <dubbo:reference interface="com.winner.service.ITestTbService" id="testTbService"/> </beans>
在消费服务器端:
@Controller public class CenterController { @Resource private ITestTbService testTbService; @RequestMapping("/test/index.do") public String index() { TestTb testTb = new TestTb(); testTb.setName("zhangsan"); testTb.setBirthday(new Date()); testTbService.insertTestTb(testTb); return "index"; } }
可以看到,我们直接用@Resource注入进来这个接口的实现,注意,这个接口的实现是在另外一台服务器上哟(此处只是用不同的端口模拟)!
注意事项:
Dubbo消费方及提供方传递的参数必须实现序列化接口!
public class TestTb implements Serializable