設計了三個dubbo服務java
testDubboxNoSerialCallback 返回值沒有序列化spring
testDubboxSerialCallback 返回值序列化app
testDubboxNoSerialParam 參數沒有序列化ide
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服務實現this
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; } }
未序列化的實體類NoSerialEntityspa
/** * */ 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服務code
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); } }
返回值參數都序列化的測試方法正常xml
返回值或者參數沒有序列化的會拋出異常
java.lang.IllegalStateException: Serialized class com.zhu.example.entity.NoSerialEntity must implement java.io.Serializable