Springboot+Dubbox 提供Rest服务实践

article/2025/11/1 12:58:13

背景

在开发过程中,dubbo接口自测时,通过控制台的invoke方式调用dubbo服务不方便,主要体现在入参设置和入参保存上(invoke方式调用dubbo服务请参考:命令行中调用dubbo服务及入参写法_Ypc_victor的专栏-CSDN博客)。postman对发送rest请求支持的很好,可以方便的设置和保存各种入参,因此考虑是否可以通过rest方式调用dubbo。得知dubbox提供了rest调用方式,想着如果可以通过简单的注解实现,便能够提升开发效率。

操作步骤

1、引入POM

<dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId><version>2.8.4</version>
</dependency>
<dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-dependencies-zookeeper</artifactId><version>2.8.4</version>
</dependency>
<dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-jaxrs</artifactId><version>3.0.7.Final</version>
</dependency>
<dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-client</artifactId><version>3.0.7.Final</version>
</dependency>
<dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>1.0.0.GA</version>
</dependency><!-- 如果要使用json序列化 -->
<dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-jackson-provider</artifactId><version>3.0.7.Final</version>
</dependency>

2、添加注解

前提:该服务可以通过dubbo方式正常调用。只需添加@Path @POST @Consumes等注解即可。

@Service("riskMonitorDispatchService")
@Path("monitor")
public class RiskMonitorDispatchServiceImpl implements RiskMonitorDispatchService {@Override@POST@Path("dispatch")@Consumes({MediaType.APPLICATION_JSON})@Produces({MediaType.APPLICATION_JSON})public ResultDTO<String> dispatch(DispatchDTO dispatchDTO) {ResultDTO<String> resultDTO = new ResultDTO<>();if ("rest".equals(dispatchDTO.getTaskCode())) {resultDTO.setCode(ResultDTO.SUCCESS);resultDTO.setMsg("resut success");return resultDTO;}}
}

3、在dubbo配置文件dubbo.xml中添加rest配置

<!-- 用rest协议在8080端口暴露服务 -->
<dubbo:protocol name="rest" port="6666"/>

4、调用


 

遇到的问题

1、jar包冲突问题

报错,java.lang.NoSuchMethodError,排查后发现是pom依赖冲突导致。这个冲突比较隐蔽,通过Dependency Analyzer插件并没有发现问题。这个冲突不是jar包版本不一致导致的,而是由于不同jar用了相同的Interface导致。(传统冲突原理和解决办法参考:Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.)
具体的问题是eureka里面的jsr311-api导致,只需exclude即可。

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId><exclusions><exclusion><groupId>javax.ws.rs</groupId><artifactId>jsr311-api</artifactId></exclusion></exclusions>
</dependency>

2、postman使用问题

请求入参为bean时,使用postman发送post请求,尝试了几种格式,只有JSON格式能够正确识别。form-data、x-www-form-urlencoded都无法正确识别。参考下图方式:

参考

1、当当官方说明:

resthttp://dangdangdotcom.github.io/dubbox/rest.html

2、Dubbox源码: 

https://github.com/dangdangdotcom/dubboxhttps://github.com/dangdangdotcom/dubbox

3、java.lang.NoSuchFieldError: SERVER_SENT_EVENTS_TYPE:

Resteasy 3.5.0.App Engine标准环境最终版-NoSuchFieldError SERVER_SENT_EVENTS_TYPE - IT屋-程序员软件开发技术分享社区Resteasy 3.5.0.Final on App Engine standard env - NoSuchFieldError SERVER_SENT_EVENTS_TYPE(Resteasy 3.5.0.App Engine标准环境最终版-NoSuchFieldError SERVER_SENT_EVENTS_TYPE) - IT屋-程序员软件开发技术分享社区https://www.it1352.com/2104019.html

4、NoClassDefFoundError: org/mortbay/log/StdErrLog: 

​​​​​​dubbo框架中NoClassDefFoundError: org/mortbay/log/StdErrLog报错原因_s912683912的博​​​​​​客-CSDN博客​​​​​​2019-03-28 15:48:37.149 [main] ERROR org.springframework.boot.SpringApplication - Application run failedjava.lang.NoClassDefFoundError: org/mortbay/log/StdErrLog at com.alibaba.dubbo.remoting.htt...https://blog.csdn.net/s912683912/article/details/88870805

5、java.lang.NoSuchMethodError: javax.ws.rs.core.HttpHeaders.getHeaderString(Ljava/lang/String;)Ljava/lang/String:

http://www.blackzs.com/archives/1660http://www.blackzs.com/archives/1660http://www.blackzs.com/archives/1660

6、Bad arguments passed to org.jboss.resteasy.spi.metadata.ResourceMethod:

https://blog.csdn.net/john1337/article/details/79130986/https://blog.csdn.net/john1337/article/details/79130986/https://blog.csdn.net/john1337/article/details/79130986/


http://chatgpt.dhexx.cn/article/vLhOfRuj.shtml

相关文章

Dubbo2

一、基础知识 1、分布式基础理论 1.1&#xff09;、什么是分布式系统&#xff1f; 《分布式系统原理与范型》定义&#xff1a; “分布式系统是若干独立计算机的集合&#xff0c;这些计算机对于用户来说就像单个相关系统” 分布式系统&#xff08;distributed system&#…

Dubbox 是什么?

1. Dubbo是什么&#xff1f; Dubbo是一个分布式服务框架&#xff0c;致力于提供高性能和透明化的RPC远程服务调用方案&#xff0c;以及SOA服务治理方案。简单的说&#xff0c;dubbo就是个服务框架&#xff0c;如果没有分布式的需求&#xff0c;其实是不需要用的&#xff0c;只…

分布式服务框架 dubbo/dubbox 入门示例

http://www.cnblogs.com/Javame/p/3632473.html 1. Dubbo是什么&#xff1f; Dubbo是一个分布式服务框架&#xff0c;致力于提供高性能和透明化的RPC远程服务调用方案&#xff0c;以及SOA服务治理方案。简单的说&#xff0c;dubbo就是个服务框架&#xff0c;如果没有分布式的…

SpringBoot整合Dubbox(无XML配置)

##简介 Dubbox是当当网对阿里的Dubbo进行增强的一个分支。在使用springboot之后&#xff0c;我们发现很多配置并不一定要使用xml。这篇文章的目的是让你使用Dubbox时能像使用springboot的其它功能一样可以在application.properties中配置。 ##基础整合 进入https://github.co…

Dubbo进阶(十一)—— Dubbo与DubboX区别

前世今生 Dubbo源于阿里的淘宝网开源分布式服务架构&#xff0c;致力于提供高性能和透明化的RPC远程服务调用方案&#xff0c;是SOA服务化治理方案的核心框架。淘宝网将其开源之后&#xff0c;得到了很多的拓展和支持&#xff08;比较出名的有&#xff1a;当当网的扩展版本dub…

[Dubbox基础]-- 文档

一、网址 官方&#xff1a;https://github.com/dangdangdotcom/dubbox 参考&#xff1a;https://www.douban.com/note/488997143/ 二、说明 1、问题&#xff1a;https://github.com/dangdangdotcom/dubbox/issues 2、主要&#xff1a; Dubbox now means Dubbo eXtensions. …

浅谈Dubbox原理

Dubbox介绍 Dubbox是一个分布式服务框架&#xff0c;前身是阿里旗下的开源项目Dubbo&#xff0c;后来阿里停止维护&#xff0c;当当网在Dubbo的基础上进行优化&#xff0c;并继续维护&#xff0c;为了与原来的Dubbo区分故将其改名为Dubbox&#xff0c;当当网在其原有的基础上实…

Dubbox 和Dubbo 为何选择

1. 前言 随着现在互联网行业的发展&#xff0c;越来越多的框架、中间件、容器等开源技术不断地涌现&#xff0c;更好地来服务于业务&#xff0c;解决实现业务的问题。然而面对众多的技术选择&#xff0c;我们要如何甄别出适合自己团队业务的技术呢&#xff1f;对于人来说&#…

springboot整合dubbox

简介 今天咱们来看看怎么利用Spring Boot整合Dubbox来开发去中心化的微服务。 系统环境 本文基于Jdk1.8/Maven 3.3.9/Spring Boot 1.4.2.RELEASE/Dubbo 2.8.5.SNAPSHOT(Dubbox后续开源版本)/ZooKeeper3.4.8 Zookeeper环境搭建 下载并安装启动 下载 wget http://mirrors.h…

Dubbo

协议&#xff1a; Dubbo是一种分布式服务框架也是一种协议&#xff0c;dubbo框架默认使用dubbo协议。dubbo协议是阿里巴巴自己实现的一种应用层协议&#xff0c;传输层还是TCP。所以Dubbo协议与HTTP、FTP&#xff0c;SMTP这些应用层协议是并列的概念。除了默认的Dubbo协议&…

Dubbox简单入门

dubbox是分布式框架&#xff0c;让我们一起来简单搭建一个小demo Dubbox简介 Dubbox 是一个分布式服务框架&#xff0c;其前身是阿里巴巴开源项目Dubbo &#xff0c;被国内电商及互联网项目中使用&#xff0c;后期阿里巴巴停止了该项目的维护&#xff0c;当当网便在Dubbo基础上…

Dubbox简介与入门实战

前言 什么是Dubbox?Dubbox是一个分布式服务框架&#xff0c;其前身是阿里巴巴开源项目Dubbo,被国内电商及互联网项目中使用&#xff0c;后期阿里巴巴停止了Dubbo项目的维护&#xff08;现Dubbo已捐献给Apache基金会&#xff09;&#xff0c;因为阿里巴巴内部的HSF框架比Dubbo…

Dubbox 环境搭建

第一章&#xff1a;Dubbox简介 Dubbox是一个开源的RPC(Remote ProcedureCall Protocol)远程调用框架&#xff0c;是由dangdang对阿里的Dubbo的升级&#xff0c;可以被视为Dubbo的增强版&#xff0c;基本架构没有变动&#xff0c;升级spring2.x到spring3.x,支持restful风格的调用…

Dubbox框架简介

Dubbox框架简介 Dubbox是一个分布式服务框架&#xff0c;其前身是阿里巴巴开源项目Dubbo&#xff0c;被国内电商及互联网项目中使用&#xff0c;后期阿里巴巴停止了该项目的维护&#xff0c;当当网便在Dubbo基础上进行优化&#xff0c;并继续维护&#xff0c;为了与原有的Dubb…

Dubbo的介绍以及Dubbox的区别

Dubbo官网: http://dubbo.io/ Dubbox官网: https://github.com/dangdangdotcom/dubbox Dubbo 是阿里巴巴公司开源的一个基于Java的高性能开源RPC框架&#xff0c;使得应用可通过高性能的 RPC 实现服务的输出和输入功能&#xff0c;可以和 Spring框架无缝集成。后来因为某些原…

Dubbox学习笔记

一、Dubbox简介 1、什么是SOA架构 SOA是Service-Oriented Architecture的首字母简称&#xff0c;它是一种支持面向服务的架构样式。从服务、基于服务开发和服务的结果来看&#xff0c;面向服务是一种思考方式。其实SOA架构更多应用于互联网项目开发。 为什么互联网项目会采用…

Dubbox是什么,如何整合SpringBoot,有什么优势?

目录 一、Dubbox 是什么 二、Dubbox 如何整合SpringBoot 三、Dubbox 有什么优势 一、Dubbox 是什么 Dubbox是一款基于Java语言的分布式服务框架&#xff0c;是阿里巴巴公司开源的一款服务化治理框架&#xff0c;其前身为Dubbo。Dubbox是针对Dubbo进行了改进和升级&#xff…

dubbox简介

1.1 dubbox简介 随着互联网的发展&#xff0c;网站应用的规模不断扩大&#xff0c;常规的垂直应用架构已无法应对&#xff0c;分布式服务架构以及流动计算架构势在必行&#xff0c;亟需一个治理系统确保架构有条不紊的演进。 单一应用架构 当网站流量很小时&#xff0c;只需一…

Dubbo详细介绍与安装使用过程

1 Dubbo介绍 1.1 dubbox简介 随着互联网的发展&#xff0c;网站应用的规模不断扩大&#xff0c;常规的垂直应用架构已无法应对&#xff0c;分布式服务架构以及流动计算架构势在必行&#xff0c;亟需一个治理系统确保架构有条不紊的演进。 单一应用架构 当网站流量很小时&…

Dubbo和Zookeeper入门到实战,看这篇就够了

前沿&#xff1a;在当下流行的分布式架构中Dubbo是非常流行rpc框架&#xff0c;借着这几天有空学习学习&#xff0c;并在后面的项目中进行实战&#xff0c;为后面的分布式项目做铺垫。 Dubbox简介 Dubbox 是一个分布式rpc框架&#xff0c;是阿里巴巴的开源产品&#xff0c;后阿…