dubbo返回值和参数序列化问题

设计了三个dubbo服务

testDubboxNoSerialCallback 返回值没有序列化

testDubboxSerialCallback 返回值序列化

testDubboxNoSerialParam 参数没有序列化

dubbo服务接口

package com.zhu.example.dubbox;

import com.zhu.example.entity.NoSerialEntity;
import com.zhu.example.entity.SerialEntity;

public interface DubboxProviderNoSerial {

	public NoSerialEntity testDubboxNoSerialCallback();

	public SerialEntity testDubboxSerialCallback();

	public SerialEntity testDubboxNoSerialParam(NoSerialEntity entity);
}

dubbo服务实现

package com.zhu.example.dubbox;

import com.zhu.example.entity.NoSerialEntity;
import com.zhu.example.entity.SerialEntity;

public class DubboxProviderNoSerialImpl implements DubboxProviderNoSerial {

	/* (non-Javadoc)
	 * @see com.zhu.example.dubbox.DubboxProviderNoSerial#testDubboxNoSerialParam()
	 */
	public NoSerialEntity testDubboxNoSerialCallback() {
		NoSerialEntity test=new NoSerialEntity();
		test.setName("test");
		return test;
	}

	/* (non-Javadoc)
	 * @see com.zhu.example.dubbox.DubboxProviderNoSerial#testDubboxSerialCallback()
	 */
	public SerialEntity testDubboxSerialCallback() {
		SerialEntity test=new SerialEntity();
		test.setName("test");
		return test;
	}

	/* (non-Javadoc)
	 * @see com.zhu.example.dubbox.DubboxProviderNoSerial#testDubboxNoSerialParam(com.zhu.example.entity.NoSerialEntity)
	 */
	public SerialEntity testDubboxNoSerialParam(NoSerialEntity entity) {
		SerialEntity test=new SerialEntity();
		test.setName(entity.getName());
		return test;
	}

}

未序列化的实体类NoSerialEntity

/**
 * 
 */
package com.zhu.example.entity;

/**
 * @author zhukai
 *
 */
public class NoSerialEntity {
	String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}

序列化的实体类SerialEntity

/**
 * 
 */
package com.zhu.example.entity;

import java.io.Serializable;

/**
 * @author zhukai
 *
 */
public class SerialEntity implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 4004132163444150913L;
	String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}

consumer 调用dubbo服务

package com.zhu.example;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.util.Assert;

import com.zhu.example.dubbox.DubboxProviderNoSerial;
import com.zhu.example.entity.NoSerialEntity;
import com.zhu.example.entity.SerialEntity;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext-dubbo-consumer.xml")
public class TestDubboxConsumer {
	@Autowired
	DubboxProviderNoSerial dubboxNoSerial;

	@Test
	public void NoSerialCallback() throws InterruptedException {

		NoSerialEntity result = dubboxNoSerial.testDubboxNoSerialCallback();
		System.out.println(result.getName());
		Assert.notNull(result);
	}

	@Test
	public void SerialCallback() throws InterruptedException {

		SerialEntity result = dubboxNoSerial.testDubboxSerialCallback();
		System.out.println(result.getName());
		Assert.notNull(result);
	}

	@Test
	public void NoSerialParam() throws InterruptedException {
		NoSerialEntity entity =new NoSerialEntity();
		entity.setName("NoSerialParam");
		SerialEntity result = dubboxNoSerial.testDubboxNoSerialParam(entity);
		System.out.println(result.getName());
		Assert.notNull(result);
	}

}

返回值参数都序列化的测试方法正常

返回值或者参数没有序列化的会抛出异常

java.lang.IllegalStateException: Serialized class com.zhu.example.entity.NoSerialEntity must implement java.io.Serializable

转载于:https://my.oschina.net/superise/blog/682385

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值