Dubbo: message can not send, because channel is closed and com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method

Created on 17 Apr 2017  ·  8Comments  ·  Source: apache/dubbo

com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method findByLoginName in the service com.shopping.users.i.UserService. Tried 1 times of the providers [10.45.225.86:28880] (1/1) from the registry
    at com.alibaba.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:101)
    at com.alibaba.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:227)
    at com.alibaba.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker.invoke(MockClusterInvoker.java:72)
    at com.alibaba.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:52)
    at com.alibaba.dubbo.common.bytecode.proxy0.findByLoginName(proxy0.java)
    at com.shopping.common.shiro.service.CustomRealm.doGetAuthenticationInfo(CustomRealm.java:53)
    at org.apache.shiro.realm.AuthenticatingRealm.getAuthenticationInfo(AuthenticatingRealm.java:568)
    at org.apache.shiro.authc.pam.ModularRealmAuthenticator.doSingleRealmAuthentication(ModularRealmAuthenticator.java:180)
    at org.apache.shiro.authc.pam.ModularRealmAuthenticator.doAuthenticate(ModularRealmAuthenticator.java:267)
    at org.apache.shiro.authc.AbstractAuthenticator.authenticate(AbstractAuthenticator.java:198)
    at org.apache.shiro.mgt.AuthenticatingSecurityManager.authenticate(AuthenticatingSecurityManager.java:106)
    at org.apache.shiro.mgt.DefaultSecurityManager.login(DefaultSecurityManager.java:270)
    at org.apache.shiro.subject.support.DelegatingSubject.login(DelegatingSubject.java:256)
    at org.apache.shiro.web.filter.authc.AuthenticatingFilter.executeLogin(AuthenticatingFilter.java:53)
    at org.apache.shiro.web.filter.authc.FormAuthenticationFilter.onAccessDenied(FormAuthenticationFilter.java:154)
    at com.shopping.common.shiro.service.CustomFormAuthenticationFilter.onAccessDenied(CustomFormAuthenticationFilter.java:41)
    at org.apache.shiro.web.filter.AccessControlFilter.onAccessDenied(AccessControlFilter.java:133)
    at org.apache.shiro.web.filter.AccessControlFilter.onPreHandle(AccessControlFilter.java:162)
    at org.apache.shiro.web.filter.PathMatchingFilter.isFilterChainContinued(PathMatchingFilter.java:203)
    at org.apache.shiro.web.filter.PathMatchingFilter.preHandle(PathMatchingFilter.java:178)
    at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:131)
    at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
    at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
    at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
    at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
    at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
    at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
    at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
    at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
    at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
Caused by: com.alibaba.dubbo.remoting.RemotingException: message can not send, because channel is closed . 

Most helpful comment

我们遇到问题的场景是 测试同学通过异步调用的方式测试Dubbo同步调用的服务,单测跑完了,但测试的异步回调还在尝试获取结果,就触发了这个问题。

Caused by: com.alibaba.dubbo.remoting.RemotingException: 
message can not send, because channel is closed.

问题原因是调用通道已关闭引起服务方法调用失败

All 8 comments

how to fix it

错误很明显就是远程调用异常,看看网络,再看看你用的什么通讯协议,具体问题还得具体分析。

谢了

有同样的问题,我是直接跑的demo,在网上找了半天,说是因为网络不通。
导致网络不通的问题有很多:

  • 检查有没有虚拟网卡(例如wifi共享精灵这种,虚拟机等)
  • 防火墙

我禁用了VMWare的虚拟网卡,然后还是不行。
之后想到我装了Avast杀毒软件,带了有个防火墙,在防火墙里面给JRE设置例外就行了。

我们遇到问题的场景是 测试同学通过异步调用的方式测试Dubbo同步调用的服务,单测跑完了,但测试的异步回调还在尝试获取结果,就触发了这个问题。

Caused by: com.alibaba.dubbo.remoting.RemotingException: 
message can not send, because channel is closed.

问题原因是调用通道已关闭引起服务方法调用失败

我也遇到了这个问题 网上有的说是网络问题 但是 ping了服务器什么 都可以 刚开始还可以调通,不知道什么原因然后再调用就不通了,导致所有的服务都是报这个问题,重启一下服务器就好了也不报这个错误了但是当程序再跑一段时间偶尔还会报这个错误,我感觉不是网络问题导致的,具体原因求大神指点,

@vaidi Dubbo 版本是多少

同样遇到类似问题 @vaidi 我的版本是dubbo-2.6.0. 原因还没找到.
我这边是其他服务调用的时候偶尔不通, 大部分时间是通的. 是不是网络抖动造成的?

Was this page helpful?
0 / 5 - 0 ratings