使用dubbo分布式处理时,遇见PageHelper插件使用的问题

在使用dubbo进行分布式处理时遇到PageHelper插件问题,表现为Hessian/Burlap警告,原因是服务提供方在反序列化时找不到'com.github.pagehelper.Page'类。解决方案是在web工程的pom.xml中添加PageHelper和MyBatis的依赖,以解决类找不到错误(NoClassDefFoundError: org/apache/ibatis/session/RowBounds)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 警告: Hessian/Burlap: 'com.github.pagehelper.Page' is an unknown class in WebappClassLoader

  2. context:

  3. delegate: false

  4. repositories:

  5. ----------> Parent Classloader:

  6. ClassRealm[plugin>org.apache.tomcat.maven:tomcat7-maven-plugin:2.2, parent: sun.misc.Launcher$AppClassLoader@7692ed85]

  7. :

  8. java.lang.ClassNotFoundException: com.github.pagehelper.Page

  9. 十月 18, 2018 8:21:43 下午 com.alibaba.com.caucho.hessian.io.SerializerFactory getDeserializer

  10. 警告: Hessian/Burlap: 'com.github.pagehelper.Page' is an unknown class in WebappClassLoader

  11. context:

  12. delegate: false

  13. repositories:

  14. ----------> Parent Classloader:

  15. ClassRealm[plugin>org.apache.tomcat.maven:tomcat7-maven-plugin:2.2, parent: sun.misc.Launcher$AppClassLoader@7692ed85]

  16. :

  17. java.lang.ClassNotFoundException: com.github.pagehelper.Page

主要是:警告: Hessian/Burlap: 'com.github.pagehelper.Page' is an unknown class in WebappClassLoader。

出现这个问题的原因是:客户端在调用服务时会将参数自动序列化,服务提供方在反序列化时无法以最有效的方式反序列话,就会产生如上警告。但我们的程序还是行之有效的。

所以解决办法就是在web工程的pom.xml中加上PageHelper的依赖。版本在父工程中定义了。


 
  1. <dependency>

  2. <groupId>com.github.pagehelper</groupId>

  3. <artifactId>pagehelper</artifactId>

  4. </dependency>

但是随之又有一个错误:


 
  1. 严重: Servlet.service() for servlet [springmvc] in context with path [] threw exception [Request processing failed; nested exception is com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method findPage in the service com.pinyougou.sellergoods.service.BrandService. Tried 3 times of the providers [192.168.119.1:20881] (1/1) from the registry 192.168.25.128:2181 on the consumer 192.168.119.1 using the dubbo version 2.8.4. Last error is: Failed to invoke remote method: findPage, provider: dubbo://192.168.119.1:20881/com.pinyougou.sellergoods.service.BrandService?anyhost=true&application=pinyougou-manager-web&check=false&dubbo=2.8.4&generic=false&interface=com.pinyougou.sellergoods.service.BrandService&methods=findAll,findPage&pid=7868&revision=0.0.1-SNAPSHOT&side=consumer&timestamp=1539865646410, cause: java.lang.NoClassDefFoundError: org/apache/ibatis/session/RowBounds

  2. java.lang.NoClassDefFoundError: org/apache/ibatis/session/RowBounds

  3. at java.lang.Class.getDeclaredConstructors0(Native Method)

  4. at java.lang.Class.privateGetDeclaredConstructors(Class.java:2493)

  5. at java.lang.Class.getConstructor0(Class.java:2803)

  6. at java.lang.Class.newInstance(Class.java:345)

  7. at com.alibaba.com.caucho.hessian.io.CollectionDeserializer.createList(CollectionDeserializer.java:107)

  8. at com.alibaba.com.caucho.hessian.io.CollectionDeserializer.readLengthList(CollectionDeserializer.java:88)

  9. at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:1628)

  10. at com.alibaba.com.caucho.hessian.io.JavaDeserializer$ObjectFieldDeserializer.deserialize(JavaDeserializer.java:396)

  11. at com.alibaba.com.caucho.hessian.io.JavaDeserializer.readObject(JavaDeserializer.java:233)

  12. at com.alibaba.com.caucho.hessian.io.JavaDeserializer.readObject(JavaDeserializer.java:157)

  13. at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObjectInstance(Hessian2Input.java:2067)

  14. at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:1592)

  15. at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:1576)

  16. at com.alibaba.dubbo.common.serialize.support.hessian.Hessian2ObjectInput.readObject(Hessian2ObjectInput.java:94)

  17. at com.alibaba.dubbo.common.serialize.support.hessian.Hessian2ObjectInput.readObject(Hessian2ObjectInput.java:99)

  18. at com.alibaba.dubbo.rpc.protocol.dubbo.DecodeableRpcResult.decode(DecodeableRpcResult.java:85)

  19. at com.alibaba.dubbo.rpc.protocol.dubbo.DecodeableRpcResult.decode(DecodeableRpcResult.java:117)

  20. at com.alibaba.dubbo.rpc.protocol.dubbo.DubboCodec.decodeBody(DubboCodec.java:98)

  21. at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.decode(ExchangeCodec.java:134)

  22. at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.decode(ExchangeCodec.java:95)

  23. at com.alibaba.dubbo.rpc.protocol.dubbo.DubboCountCodec.decode(DubboCountCodec.java:46)

  24. at com.alibaba.dubbo.remoting.transport.netty.NettyCodecAdapter$InternalDecoder.messageReceived(NettyCodecAdapter.java:134)

  25. at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)

  26. at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)

  27. at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)

  28. at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)

  29. at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)

  30. at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)

  31. at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:109)

  32. at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:312)

  33. at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:90)

  34. at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)

  35. at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)

  36. at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)

  37. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

  38. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

  39. at java.lang.Thread.run(Thread.java:744)

  40. Caused by: java.lang.ClassNotFoundException: org.apache.ibatis.session.RowBounds

  41. at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)

  42. at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)

  43. ... 37 more

  44. ] with root cause

  45. com.alibaba.dubbo.remoting.RemotingException: java.lang.NoClassDefFoundError: org/apache/ibatis/session/RowBounds

  46. java.lang.NoClassDefFoundError: org/apache/ibatis/session/RowBounds

  47. at java.lang.Class.getDeclaredConstructors0(Native Method)

  48. at java.lang.Class.privateGetDeclaredConstructors(Class.java:2493)

  49. at java.lang.Class.getConstructor0(Class.java:2803)

  50. at java.lang.Class.newInstance(Class.java:345)

  51. at com.alibaba.com.caucho.hessian.io.CollectionDeserializer.createList(CollectionDeserializer.java:107)

  52. at com.alibaba.com.caucho.hessian.io.CollectionDeserializer.readLengthList(CollectionDeserializer.java:88)

  53. at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:1628)

  54. at com.alibaba.com.caucho.hessian.io.JavaDeserializer$ObjectFieldDeserializer.deserialize(JavaDeserializer.java:396)

  55. at com.alibaba.com.caucho.hessian.io.JavaDeserializer.readObject(JavaDeserializer.java:233)

  56. at com.alibaba.com.caucho.hessian.io.JavaDeserializer.readObject(JavaDeserializer.java:157)

  57. at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObjectInstance(Hessian2Input.java:2067)

  58. at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:1592)

  59. at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:1576)

  60. at com.alibaba.dubbo.common.serialize.support.hessian.Hessian2ObjectInput.readObject(Hessian2ObjectInput.java:94)

  61. at com.alibaba.dubbo.common.serialize.support.hessian.Hessian2ObjectInput.readObject(Hessian2ObjectInput.java:99)

  62. at com.alibaba.dubbo.rpc.protocol.dubbo.DecodeableRpcResult.decode(DecodeableRpcResult.java:85)

  63. at com.alibaba.dubbo.rpc.protocol.dubbo.DecodeableRpcResult.decode(DecodeableRpcResult.java:117)

  64. at com.alibaba.dubbo.rpc.protocol.dubbo.DubboCodec.decodeBody(DubboCodec.java:98)

  65. at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.decode(ExchangeCodec.java:134)

  66. at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.decode(ExchangeCodec.java:95)

  67. at com.alibaba.dubbo.rpc.protocol.dubbo.DubboCountCodec.decode(DubboCountCodec.java:46)

  68. at com.alibaba.dubbo.remoting.transport.netty.NettyCodecAdapter$InternalDecoder.messageReceived(NettyCodecAdapter.java:134)

  69. at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)

  70. at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)

  71. at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)

  72. at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)

  73. at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)

  74. at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)

  75. at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:109)

  76. at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:312)

  77. at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:90)

  78. at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)

  79. at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)

  80. at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)

  81. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

  82. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

  83. at java.lang.Thread.run(Thread.java:744)

  84. Caused by: java.lang.ClassNotFoundException: org.apache.ibatis.session.RowBounds

  85. at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)

  86. at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)

  87. ... 37 more

  88.  
  89. at com.alibaba.dubbo.remoting.exchange.support.DefaultFuture.returnFromResponse(DefaultFuture.java:190)

  90. at com.alibaba.dubbo.remoting.exchange.support.DefaultFuture.get(DefaultFuture.java:110)

  91. at com.alibaba.dubbo.remoting.exchange.support.DefaultFuture.get(DefaultFuture.java:84)

  92. at com.alibaba.dubbo.rpc.protocol.dubbo.DubboInvoker.doInvoke(DubboInvoker.java:96)

  93. at com.alibaba.dubbo.rpc.protocol.AbstractInvoker.invoke(AbstractInvoker.java:144)

  94. at com.alibaba.dubbo.rpc.listener.ListenerInvokerWrapper.invoke(ListenerInvokerWrapper.java:74)

  95. at com.alibaba.dubbo.rpc.protocol.dubbo.filter.FutureFilter.invoke(FutureFilter.java:53)

  96. at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)

  97. at com.alibaba.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:75)

  98. at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)

  99. at com.alibaba.dubbo.rpc.filter.ConsumerContextFilter.invoke(ConsumerContextFilter.java:48)

  100. at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)

  101. at com.alibaba.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:53)

  102. at com.alibaba.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:77)

  103. at com.alibaba.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:227)

  104. at com.alibaba.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker.invoke(MockClusterInvoker.java:72)

  105. at com.alibaba.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:52)

  106. at com.alibaba.dubbo.common.bytecode.proxy0.findPage(proxy0.java)

  107. at com.pinyougou.manager.controller.BrandController.findPage(BrandController.java:50)

  108. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

  109. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

  110. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

  111. at java.lang.reflect.Method.invoke(Method.java:606)

  112. at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222)

  113. at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)

  114. at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)

  115. at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814)

  116. at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737)

  117. at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)

  118. at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)

  119. at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)

  120. at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:969)

  121. at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:860)

  122. at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)

  123. at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845)

  124. at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

  125. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)

  126. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

  127. at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)

  128. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)

  129. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

  130. at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121)

  131. at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

  132. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)

  133. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

  134. at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)

  135. at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)

  136. at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)

  137. at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)

  138. at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)

  139. at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)

  140. at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)

  141. at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)

  142. at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)

  143. at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)

  144. at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)

  145. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

  146. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

  147. at java.lang.Thread.run(Thread.java:744)

总结就是这个错误:java.lang.NoClassDefFoundError: org/apache/ibatis/session/RowBounds

这是因为web工程中没有依赖MyBatis的包,在pom.xml中再次添加上相应的依赖就行。

 

所以,整个的解决办法是在web的pom.xml中 加上PageHelper和Mybatis的依赖。


 
  1. <dependency>

  2. <groupId>com.github.pagehelper</groupId>

  3. <artifactId>pagehelper</artifactId>

  4. </dependency>

  5. <dependency>

  6. <groupId>org.mybatis</groupId>

  7. <artifactId>mybatis</artifactId>

  8. </dependency>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值