- 前言:首先dubbo-admin与我们的jdk1.8不兼容,开始我们用的jdk1.8发现不兼容,最后改为了1.7
- 此次文章是基于我以前的一个简单的项目改造而成的,当做dubbo的一个上手项目
- 开发时所需用到工具eclipse-mars、apache-maven-3.6.0、apache-tomcat-8.0.36、jdk1.7、MySql5.6、zookeeper-3.4.8、dubbo-admin-2.5.3
- 关于软件的安装和环境的部署网上都有很多的教程。在这里我就不详细的说明了。
- 说明一下关于zookeeper和dubbo-admin的安装教程https://blog.csdn.net/zhq426/article/details/56014525 参考这篇文章就可以了,在这里我用的是zk单机模式的部署。
- 这是我项目整体架构的一个结构图
在这里特别说明一下,我这个项目使用maven管理,api是一个jar包具体提供一些借口,provider是服务提供方,它是一个war包,然后consumer也是一个war包,它就相当于我们mvc里面的controller层,由于网上一些教程没有说明每个子module具体是什么类型的包,让我创建了几次maven工程。provider和consumer既然是一个web应用,所以少不了一些配置文件,因为这个工程是根据SSM架构过来的,所以具体的配置文件就是用的ssm架构的一些套路。
对比着看一下:
、
两者在配置文件的差异具体体现在一个里面是
provider.xml
id是自己定义的,class是根据你自己的项目写的路径,下面的一行就是根据上面定义好的id去使用它
consumer.xml
这是两个比较重要的一点。
我在项目开发中遇到的最多的问题就是配置少了一些jar包的依赖,因为一个web工程要想运行少不了具体的jar包,比如:spring、mybatis的jar包是必须引用的,当然还少不了
这两个在consumer和provider中都必须配置,一个是dubbo的依赖,一个是启动zk时的依赖,如果不依赖会报访问不到的错误
- 如果你要看通过dubbo-admin管理provider,那么你需要做以下几个步骤:
- 打开cmd命令行,切换到zk的bin目录下:然后运行zkServer.cmd,运行成功会如图所示
3.启动我们自己的shop-dubbo-provider项目
这就是启动成功的标志,然后我们通过访问
在这里你需要登录你的用户名和密码而进入你的dubbo-admin,具体配置在
一个是以root登录,一个是用普通用户登录。
我们的provider启动成功后就会在我们的dubbo-admin下可以找到了
4.在我们启动Tomcat项目时有可能报这种错误
这是由于Tomcat启动时间不足造成的,可以增加他的启动时间
双击标红部分,然后可以看到如图所示,打开标红部分
修改它的启动时间即可
5.我们启动shop-dubbo-consumer,正常的访问页面即可
到此,一个SSM架构的项目已经改造完成,我在这里面只用了一个provider,可以多部署几个provider到Tomcat上,只需要改变启动的端口号就可以同时启动多个Tomcat,有兴趣的可以尝试一下。
SSM架构的源码:https://github.com/BELONG1997520/shop
Dubbo架构的源码:https://github.com/BELONG1997520/shop/tree/shop-dubbo/shop-dubbo-parent
数据库源码:
/*
Navicat MySQL Data Transfer
Source Server : localhost
Source Server Version : 50722
Source Host : localhost:3306
Source Database : shop
Target Server Type : MYSQL
Target Server Version : 50722
File Encoding : 65001
Date: 2019-01-06 10:29:45
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `tb_item`
-- ----------------------------
DROP TABLE IF EXISTS `tb_item`;
CREATE TABLE `tb_item` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`title_desc` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`created` date DEFAULT NULL,
`updated` date DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
-- ----------------------------
-- Records of tb_item
-- ----------------------------
INSERT INTO `tb_item` VALUES ('1', 'liao', null, null, null);
INSERT INTO `tb_item` VALUES ('2', 'lili', null, null, null);
INSERT INTO `tb_item` VALUES ('3', 'lili', null, null, null);