更改dubbo序列化方式——'org.springframework.data.domain.PageImpl' could not be instantiated

报错信息:

com.alibaba.dubbo.remoting.RemotingException: com.alibaba.com.caucho.hessian.io.HessianProtocolException: ‘org.springframework.data.domain.PageImpl’ could not be instantiated
com.alibaba.com.caucho.hessian.io.HessianProtocolException: ‘org.springframework.data.domain.PageImpl’ could not be instantiated
… …
Caused by: java.lang.IllegalArgumentException: Content must not be null!

com.alibaba.dubbo.remoting.RemotingException: com.alibaba.com.caucho.hessian.io.HessianProtocolException: 'org.springframework.data.domain.PageImpl' could not be instantiated
com.alibaba.com.caucho.hessian.io.HessianProtocolException: 'org.springframework.data.domain.PageImpl' could not be instantiated
	at com.alibaba.com.caucho.hessian.io.JavaDeserializer.instantiate(JavaDeserializer.java:316)
	at com.alibaba.com.caucho.hessian.io.JavaDeserializer.readObject(JavaDeserializer.java:201)
	at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObjectInstance(Hessian2Input.java:2818)
	at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2145)
	at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2074)
	at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2118)
	at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2074)
	at com.alibaba.dubbo.common.serialize.hessian2.Hessian2ObjectInput.readObject(Hessian2ObjectInput.java:91)
	at com.alibaba.dubbo.common.serialize.hessian2.Hessian2ObjectInput.readObject(Hessian2ObjectInput.java:96)
	at com.alibaba.dubbo.rpc.protocol.dubbo.DecodeableRpcResult.decode(DecodeableRpcResult.java:113)
	at com.alibaba.dubbo.rpc.protocol.dubbo.DecodeableRpcResult.decode(DecodeableRpcResult.java:143)
	at com.alibaba.dubbo.rpc.protocol.dubbo.DubboCodec.decodeBody(DubboCodec.java:90)
	at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.decode(ExchangeCodec.java:125)
	at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.decode(ExchangeCodec.java:85)
	at com.alibaba.dubbo.rpc.protocol.dubbo.DubboCountCodec.decode(DubboCountCodec.java:46)
	at com.alibaba.dubbo.remoting.transport.netty.NettyCodecAdapter$InternalDecoder.messageReceived(NettyCodecAdapter.java:133)
	at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
	at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
	at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)
	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)
	at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)
	at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:109)
	at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:312)
	at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:90)
	at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
	at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
	at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at com.alibaba.com.caucho.hessian.io.JavaDeserializer.instantiate(JavaDeserializer.java:312)
	... 30 more
Caused by: java.lang.IllegalArgumentException: Content must not be null!
	at org.springframework.util.Assert.notNull(Assert.java:198)
	at org.springframework.data.domain.Chunk.<init>(Chunk.java:53)
	at org.springframework.data.domain.PageImpl.<init>(PageImpl.java:46)
	at org.springframework.data.domain.PageImpl.<init>(PageImpl.java:61)
	... 35 more

	at com.alibaba.dubbo.remoting.exchange.support.DefaultFuture.returnFromResponse(DefaultFuture.java:245) ~[dubbo-2.6.5.jar:2.6.5]
	at com.alibaba.dubbo.remoting.exchange.support.DefaultFuture.get(DefaultFuture.java:162) ~[dubbo-2.6.5.jar:2.6.5]
	at com.alibaba.dubbo.remoting.exchange.support.DefaultFuture.get(DefaultFuture.java:135) ~[dubbo-2.6.5.jar:2.6.5]
	...
	at java.lang.Thread.run(Thread.java:748) [na:1.8.0_181]

原因:经过网上查询资料得知,dubbo的序列化方式引起的异常,更换dubbo序列化方式为kryo即可解决,不过网上绝大多数都是基于xml的方式解决的,意外的运行发现,将配置放置在springboot的application.yml中也可以使用。

dubbo:
  application:
    name: dubbo-provider
  registry:
    address: zookeeper://192.168.67.130:2181
  protocol:
    name: dubbo
    port: 20880
    serialization: kryo

注意:

  1. 网上查资料记得哪篇说过别的序列化方式暂时都是有问题的,我也没尝试,只知道这个可以 serialization: kryo
  2. 虽然报错的工程是消费者的web工程,但是这段配置要放到提供者的配置中!!!
  3. 我使用的是springboot2.1.3+dubbo2.6.5,不是使用的dubbox
  4. 可点击查看demo工程springboot2.1.3整合dubbo2.6.5(提供者、消费者Demo 注解方式无xml)
  5. JPA才会出现这个问题,mybatis不会出现
BeanCreationNotAllowedException是Spring框架中的一个异常,表示在工厂销毁期间不允许创建单例bean。这个异常通常在获取单例bean时抛出,当工厂正在销毁时,不允许创建新的单例bean。\[2\] 可能导致BeanCreationNotAllowedException异常的原因包括: 1. 对应的bean没有添加注解或注解错误,例如将Spring的@Service注解错误地选为dubbo的注解。 2. 选择错误的自动注入方法。 解决BeanCreationNotAllowedException异常的方法包括: 1. 检查对应的bean是否正确添加了注解,并且注解选择正确。 2. 检查自动注入方法是否选择正确。 在注入Facade层接口时,应该使用RemoteServiceFactory.getService方法,例如: ErrorCodeFacade errorCodeFacade = RemoteServiceFactory.getService(ErrorCodeFacade.class);\[3\] #### 引用[.reference_title] - *1* *3* [出现 org.springframework.beans.factory.BeanCreationException 异常的原因及解决方法](https://blog.csdn.net/Hydra_shuang/article/details/82797777)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [spring异常之BeanCreationNotAllowedException](https://blog.csdn.net/u010597819/article/details/87918232)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值