dubbo的Multipart文件上传问题

采用dubbo对MultipartFile文件进行传输时,会报invoke method 错误,是因为dubbo并不能跨系统传递这个对象,可以采用Hessian

		 <dependency>
            <groupId>com.caucho</groupId>
            <artifactId>hessian</artifactId>
            <version>4.0.7</version>
        </dependency>
        <dependency>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jetty</artifactId>
            <version>6.1.26</version>
            <exclusions>
	     		<exclusion>
		     		<groupId>org.mortbay.jetty</groupId>
					<artifactId>servlet-api</artifactId>
				</exclusion>
			</exclusions>
        </dependency>

要注意,jetty包中要排除servlet-api包的依赖,否则会报错,Tomcat不能正常启动。
然后在spring中暴露接口:

 <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="taotao-manager-service-cxl" />
    <dubbo:registry protocol="zookeeper" address="192.168.11.131:2181" />
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />
    <dubbo:protocol name="hessian" port="20887"/>

    <!-- 声明需要暴露的服务接口 -->
    <dubbo:service protocol="dubbo" interface="service.a" ref="a"/>
    <dubbo:service protocol="hessian" interface="service.b" ref="bImpl"/>

另外,dubbo跨系统传递流,会使得流为空,最简单有效的方法是将流转变为byte数组,然后再将byte数组转化为流,即用byte为中介传递

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
如果你的dubbo配置文件yml不生效,可能存在以下几种情况: 1. 配置文件名称不正确:dubbo默认会读取名为dubbo.properties或dubbo.xml的配置文件,如果你使用的是yml格式的配置文件,则需要在启动类上添加@PropertySource注解指定配置文件的名称和路径,例如: ```java @SpringBootApplication @PropertySource("classpath:dubbo.yml") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 2. 配置文件格式错误:dubbo.yml格式有严格的语法规范,如果格式不正确,dubbo就无法读取配置信息。可以使用在线工具进行格式检查,例如:http://www.yamllint.com/ 3. 配置文件位置错误:yml文件需要放在resources目录下,且需要按照dubbo的配置规则进行配置。可以参考官方文档:http://dubbo.apache.org/zh-cn/docs/user/references/yaml/configuration.html 4. 项目中存在多个配置文件:如果你的项目中存在多个配置文件,dubbo会按照默认规则读取第一个配置文件,如果第一个配置文件中没有dubbo相关的配置信息,就无法生效。可以通过在启动类上添加@ImportResource注解指定要读取的配置文件,例如: ```java @SpringBootApplication @ImportResource("classpath:dubbo.xml") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 以上是一些可能导致dubbo配置文件yml不生效的原因,你可以根据实际情况进行排查和解决。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值