如何使用dubbo的调用方式 调用另一个系统提供的接口?

一,将自己要提供的接口方法 打包成jar包
这一步的要求:
1,在项目中新建一个文件夹,这个文件夹专门提供对外提供的接口。
在这里插入图片描述
2,这个文件夹中怎么写自己提供的接口方法呢?
本来自己改变这种提供方式前,自己写的提供的接口是这样的。在这里插入图片描述

这种提供方法需要:
把里面调用的接口方法,和接口方法实现类挪在openapi文件夹的service和serviceImpl中

挪用之后的样子如下图:
在这里插入图片描述
在这里插入图片描述

需要注意的地方:
2.1,serviceImpl中要加入这个注解:

@org.springframework.stereotype.Service
@com.alibaba.dubbo.config.annotation.Service(interfaceClass = StudentOpenService.class,version = "**1.0.0**", group = "**pc"**,timeout = **1200000**)

加粗的这些 都可以自己改变的
2.2,在这里插入图片描述
要注意:因为也需要把接口方法用到的dto也挪过来,所以这时候这个dto的import不要写错了,要改成openapi下的这个dto的位置,不要再是之前写的controller里面的dto的import路径了。

3,打包成jar包的步骤和需要注意的地方:
https://www.cnblogs.com/yadongliang/p/10910110.html
打包的步骤看这篇文章,自己之前的文章也有写,不过好像打包的东西不一样,所以方式不一样。
现在的情况适合根据这篇文章的步骤来。

3.1 注意的地方:
在这里插入图片描述
3.1.1 目录结构要和项目中所在位置的目录结构保持一致。
3.1.1.1 那么怎么创建目录结构呢?也就是怎么创建文件夹呢?
在这里插入图片描述

这个地方就是创建自定义文件夹的地方
3.1.1.2 不要犯这样的错误!!!:不要自己创建一个文件夹直接命名为com.zhihuishu.virtualcourse
这在项目中是对应的三个文件夹,要创建一个com文件夹,再在com文件夹下面创建zhuhuishu,再在zhuihuishu文件夹下面创建virtualcourse文件夹(与项目结构一模一样),要不然这个jar包会有错误,引用不了!!!
为了避免这种错误,你可以在打包完成之后点击鼠标右键直接解压,看com.zhihuishu.virtualcourse是不是一层一层的文件夹
3.1.2 要把class文件和java文件同时打包

4,将生成的jar包上传到maven

上传到哪的这个网址需要公司提供!!!

按照以下步骤:
在这里插入图片描述

在这里插入图片描述
第一个是包名,第二个可以写 提供项目名-调用项目名 第三个可以写日期,也可以写1.0.0

比如我这个可以写:
Group:com.zhihuishu.virtualcourse.openapi(jar包里面的包名)
Artifact:virtualcourse-studentservice(随便起就行)
Version:1.1.0(如果这个jar包有错误修改后重新上传的话,这个版本号不一样就可以,比如:1.2.0)

接下来的步骤是:

在这里插入图片描述
这样 ,就开始上传,等待上传成功。

那怎么知道是否上传成功了呢?
在这里插入图片描述

5,怎么在项目中引用这个jar包?
5.1,首先这个项目中得有dubbo的相关配置(这个如何配置,我不太清楚了。。。好像在配置文件中有相关的配置)
5.2 在项目中的pom文件加入这个依赖:
在这里插入图片描述

5.3 然后开始使用:
在这里插入图片描述
注意的地方:
四点:
1,
@Reference(check = false, version = "1.1.0", group = "pc")
加粗的部分肯定要与提供的jar包中写的保持一致!!!
(可以看到,我截图中开始使用的时候,写的版本号是1.1.0,和jar包中serviceImpl中的版本号1.0.0就不一致,所以肯定会报没有提供者的异常,使用不成功
后来,又犯了这样的问题。。。
在这里插入图片描述

在这里插入图片描述
version不一样,所以没使用成功。。。

2:
在这里插入图片描述
这个提供者项目中serviceImpl中timeout本来写的200,使用的时候报超时,所以我就直接改成了这个1200000,这时候使用成功了。
一般这里写的是3000,表示3秒。200确实实在太短了!!!
3,别忘了使用的dto,vo这些对象要序列化
在这里插入图片描述
要不然使用的时候也会报:没有提供者的异常

4,提供者serviceImpl中使用的所有对象(比如mapper中的方法返回的对象)都要写在这个openapi文件夹下面的vo文件夹下面,或者mapper中的方法返回的对象都必须是openapi文件夹下面的vo文件夹下面的某一个对象,不能是项目中的对象。
例子如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43228497/article/details/116259256
今日推荐