1、pom.xml中添加dubbo相关的依赖
UTF-8
4.2.0.RELEASE
2.6.1
com.github.sgroschupf
zkclient
0.1
org.slf4j
slf4j-log4j12
log4j
log4j
org.apache.zookeeper
zookeeper
org.apache.curator
curator-framework
4.0.1
org.apache.zookeeper
zookeeper
3.4.6
org.slf4j
slf4j-log4j12
log4j
log4j
com.alibaba
dubbo
${dubbo.version}
log4j
log4j
commons-logging
commons-logging
org.slf4j
slf4j-log4j12
1.7.12
log4j
log4j
1.2.17
commons-logging
commons-logging
1.1.3
2、dubbo服务的注册中心zookeeper的安装和启动
下载地址:http://mirrors.cnnic.cn/apache/zookeeper
参考博文:https://blog.csdn.net/tlk20071/article/details/52028945
3、对原有的Maven项目进行重构
重构之后的目录结构如下:
大体上可以拆分为API,BOOT,SERVICE,WEB等几个模块
具体为什么要分模块,以及各个模块的具体作用,可以参考博文:
https://crossoverjie.top/2017/03/04/SSM10/
4、对外提供服务
基于SSM-demo的项目来说,
首先第一步:
在SSM-DEMO-API模块中定义一个接口,例如:
package com.bsk.api;
import com.bsk.dto.UserInfoReq;
import com.bsk.dto.UserInfoRsp;
public interface UserInfoApi {
/**
* 获取用户信息
*
* @param userInfoReq
* @return
* @throws Exception
*/
UserInfoRsp getUserInfo(UserInfoReq userInfoReq) throws Exception;
}
第二步:在SSM-DEMO-SERVICE模块中实现该接口
package com.bsk.api.impl;
import com.alibaba.dubbo.config.annotation.Service;
import com.bsk.api.UserInfoApi;
import com.bsk.api.dubbo.entity.T_user;
import com.bsk.api.dubbo.service.T_UserService;
import com.bsk.api.dubbo.util.CommonUtil;
import com.bsk.dto.UserInfoReq;
import com.bsk.dto.UserInfoRsp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@Service
public class UserInfoApiImpl implements UserInfoApi {
private static Logger logger = LoggerFactory.getLogger(UserInfoApiImpl.class);
@Autowired
private T_UserService t_userService ;
/**
* 获取用户信息
*
* @param userInfoReq
* @return
* @throws Exception
*/
@Override
public UserInfoRsp getUserInfo(UserInfoReq userInfoReq) throws Exception {
logger.info("用户查询Id="+userInfoReq.getId());
//返回对象
UserInfoRsp userInfoRsp = new UserInfoRsp() ;
T_user t_user = t_userService.selectByPrimaryKey(userInfoReq.getId()) ;
//构建
buildUserInfoRsp(userInfoRsp,t_user) ;
return userInfoRsp;
}
/**
* 构建返回
* @param userInfoRsp
* @param t_user
*/
private void buildUserInfoRsp(UserInfoRsp userInfoRsp, T_user t_user) {
if (t_user == null){
t_user = new T_user() ;
}
CommonUtil.setLogValueModelToModel(t_user,userInfoRsp);
}
}
其中值得注意的一点是这里使用的dubbo
框架所提供的@service
注解。该注解的作用是声明需要暴露的服务接口。
第三步:在项目中添加几个dubbo相关的配置文件
目录结构如下:
其中,spring-dubbo-config.xml配置文件
这是配置我们服务注册的zk地址,端口号,以及服务名称、超时时间等配置信息。
spring-dubbo-consumer.xml
这里是服务消费者配置项,表明我们需要依赖的其他应用。
比如在这依赖注入了com.bsk.api.UserInfoApi这个应用,。
spring-dubbo-provider.xml
这里是服务提供者配置项,配置dubbo扫描注解包的位置,一般配置到接口实现包即可。
5、安装管理控制台
安装管理控制台后,就可以看到我们有多少服务、调用情况是怎么样等作用。
具体的安装过程,参考博文:
https://blog.csdn.net/noob_hen/article/details/81200143
需要注意一点的是:
需要将其中的dubbo.properties
的zk地址修改为自己的服务器的IP地址,
如果Tomcat启动的服务比较多的情况下,建议自行修改端口号。
我这里修改了端口号为8088
其中我们可以看到有三个服务以及注册上去了,但是有两个没有消费者,还有一个状态正常,表示有消费者对该服务进行了消费。
注意:项目启动顺序,首先启动zookeeper客户端进程,然后启动服务提供者的功能模块,再次启动服务消费者的功能模块,最后启动dubbo-admin管理控制台程序对我们所发布的服务进行管理。
参考博文:https://crossoverjie.top/2017/04/07/SSM11/