(10)Dubbo2.6.x开发rest风格接口中遇到的坑总结

x33g5p2x  于2021-12-21 转载在 其他  
字(1.7k)|赞(0)|评价(0)|浏览(642)

上一节博客《(9)Dubbo2.6.x开发rest风格的服务接口》中介绍了怎么开发rest服务接口,这个过程当中还是遇到了几个坑的,下面给大家一一介绍一下,希望大家早日脱坑,哈哈!

1:服务消费者调用时报错(消费者实际也是调用成功了):java.lang.RuntimeException: RESTEASY004600: You must use at least one, but no more than one http method annotation on: public abstract java.lang.Long com.wkp.service.rest.UserService.addUser(com.wkp.model.User)

说明:这是因为rest相关的annotation标签加在了实现类上,将rest相关的注解改到接口上就可以解决了。

2:消费者调用失败,服务提供者报错:org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure: Could not find MessageBodyWriter for response object of type: com.wkp.model.User of media type: application/json;charset=UTF-8

说明:这是因为Dubbo服务提供者缺少rest相关的json解析依赖,导致无法识别请求的json参数,服务提供者添加            resteasy-jackson-provider 依赖即可解决

<!-- 如果要支持json请求参数 -->
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jackson-provider</artifactId>
            <version>3.0.19.Final</version>
        </dependency>

如果要支持xml请求参数也要添加 resteasy-jaxb-provider 的依赖

<!-- 如果要支持xml请求参数 -->
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jaxb-provider</artifactId>
            <version>3.0.19.Final</version>
        </dependency>

3:服务消费者调用报错(消费者实际也是调用成功了):java.lang.IllegalStateException: Unsupported protocol rest in notified url: rest://169.254.68.252:8080/restApi/com.wkp.service.rest.UserService。。。。。。

说明:这是因为Dubbo消费者没有添加rest相关的依赖,添加如下pom依赖即可

<!-- rest支持 -->
<dependency>
	<groupId>org.jboss.resteasy</groupId>
	<artifactId>resteasy-jaxrs</artifactId>
	<version>3.0.19.Final</version>
</dependency>
<dependency>
	<groupId>org.jboss.resteasy</groupId>
	<artifactId>resteasy-client</artifactId>
	<version>3.0.19.Final</version>
</dependency>

好了,里面的坑就暂时先介绍到这里,如果有新坑,欢迎留言补充哈!

相关文章