Closed xiaowan closed 6 years ago
具体是什么异常啊。
异常如下: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. Sofa-Middleware-Log SLF4J Warn : No log util is usable, Default app logger will be used. Sofa-Middleware-Log SLF4J Warn : No log util is usable, Default app logger will be used. Exception in thread "main" com.alipay.sofa.rpc.core.exception.SofaRpcException: com.alipay.remoting.exception.ConnectionClosedException: Connection closed! the address is 127.0.0.1:9696 at com.alipay.sofa.rpc.transport.bolt.BoltClientTransport.convertToRpcException(BoltClientTransport.java:364) at com.alipay.sofa.rpc.transport.bolt.BoltClientTransport.syncSend(BoltClientTransport.java:271) at com.alipay.sofa.rpc.client.AbstractCluster.doSendMsg(AbstractCluster.java:509) at com.alipay.sofa.rpc.client.AbstractCluster.sendMsg(AbstractCluster.java:480) at com.alipay.sofa.rpc.filter.ConsumerInvoker.invoke(ConsumerInvoker.java:60) at com.alipay.sofa.rpc.filter.RpcReferenceContextFilter.invoke(RpcReferenceContextFilter.java:80) at com.alipay.sofa.rpc.filter.FilterInvoker.invoke(FilterInvoker.java:96) at com.alipay.sofa.rpc.filter.ConsumerExceptionFilter.invoke(ConsumerExceptionFilter.java:37) at com.alipay.sofa.rpc.filter.FilterInvoker.invoke(FilterInvoker.java:96) at com.alipay.sofa.rpc.filter.FilterChain.invoke(FilterChain.java:299) at com.alipay.sofa.rpc.client.AbstractCluster.filterChain(AbstractCluster.java:473) at com.alipay.sofa.rpc.client.FailoverCluster.doInvoke(FailoverCluster.java:66) at com.alipay.sofa.rpc.client.AbstractCluster.invoke(AbstractCluster.java:286) at com.alipay.sofa.rpc.client.ClientProxyInvoker.invoke(ClientProxyInvoker.java:83) at com.alipay.sofa.rpc.proxy.jdk.JDKInvocationHandler.invoke(JDKInvocationHandler.java:74) at com.sun.proxy.$Proxy7.sayHello(Unknown Source) at com.test.java.QuickStartClient.main(QuickStartClient.java:17) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) Caused by: com.alipay.remoting.exception.ConnectionClosedException: Connection closed! the address is 127.0.0.1:9696 at com.alipay.remoting.rpc.RpcResponseResolver.preProcess(RpcResponseResolver.java:99) at com.alipay.remoting.rpc.RpcResponseResolver.resolveResponseObject(RpcResponseResolver.java:56) at com.alipay.remoting.rpc.RpcRemoting.invokeSync(RpcRemoting.java:186) at com.alipay.remoting.rpc.RpcClientRemoting.invokeSync(RpcClientRemoting.java:67) at com.alipay.remoting.rpc.RpcClient.invokeSync(RpcClient.java:350) at com.alipay.sofa.rpc.transport.bolt.BoltClientTransport.doInvokeSync(BoltClientTransport.java:295) at com.alipay.sofa.rpc.transport.bolt.BoltClientTransport.syncSend(BoltClientTransport.java:268) ... 20 more
我刚刚又试了一下,在我机器上是没有问题的。 先运行的 QuickStartServer
,然后不要关闭 QuickStartServer
,再运行 QuickStartClient
。 你的操作步骤是这样的吗。
是这么操作的,先运行的QuickStartServer,提示如下: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. Sofa-Middleware-Log SLF4J Warn : No log util is usable, Default app logger will be used. Sofa-Middleware-Log SLF4J Warn : No log util is usable, Default app logger will be used.
这个日志是提示使用默认的logger。 能够把你的代码push到某个仓库吗,我运行一下。
就demo里的代码原封不动的复制粘贴下来的
更换过端口就可以了,不知道为什么
是不是机器本地有其它进程占用了9696端口
没有,QuickStartServer是正常启动起来的
@xiaowan 问题解决了没有?我也有遇到,直接运行sofa-rpc项目中example模块的quickstart代码报错。
QuickStartServer正常启动,启动QuickStartClient进行rpc调用时报错。具体异常栈如下:
/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/bin/java "-javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=59536:/Applications/IntelliJ IDEA.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/lib/packager.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/lib/tools.jar:/Users/lanren/Documents/repositorys/git/sofa-rpc/example/target/test-classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/all/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/core/common/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/core/exception/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/core/api/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/core-impl/client/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/core-impl/codec/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/core-impl/filter/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/core-impl/log/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/core-impl/proxy/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/core-impl/transport/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/extension-impl/extension-common/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/extension-impl/api-compatible/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/extension-impl/bootstrap-bolt/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/extension-impl/bootstrap-dubbo/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/extension-impl/bootstrap-rest/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/extension-impl/fault-tolerance/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/extension-impl/log-common-tools/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/extension-impl/registry-local/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/extension-impl/registry-zk/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/extension-impl/remoting-bolt/target/classes:/Users/lanren/.m2/repository/com/google/protobuf/protobuf-java/3.1.0/protobuf-java-3.1.0.jar:/Users/lanren/Documents/repositorys/git/sofa-rpc/extension-impl/remoting-resteasy/target/classes:/Users/lanren/.m2/repository/com/alipay/sofa/bolt/1.4.1/bolt-1.4.1.jar:/Users/lanren/.m2/repository/com/alipay/sofa/common/sofa-common-tools/1.0.12/sofa-common-tools-1.0.12.jar:/Users/lanren/.m2/repository/org/slf4j/slf4j-api/1.7.21/slf4j-api-1.7.21.jar:/Users/lanren/.m2/repository/org/javassist/javassist/3.20.0-GA/javassist-3.20.0-GA.jar:/Users/lanren/.m2/repository/io/netty/netty-all/4.1.13.Final/netty-all-4.1.13.Final.jar:/Users/lanren/.m2/repository/com/alipay/sofa/hessian/3.3.0/hessian-3.3.0.jar:/Users/lanren/.m2/repository/org/jboss/resteasy/jaxrs-api/3.0.12.Final/jaxrs-api-3.0.12.Final.jar:/Users/lanren/.m2/repository/org/jboss/resteasy/resteasy-jaxrs/3.0.12.Final/resteasy-jaxrs-3.0.12.Final.jar:/Users/lanren/.m2/repository/org/jboss/spec/javax/annotation/jboss-annotations-api_1.1_spec/1.0.1.Final/jboss-annotations-api_1.1_spec-1.0.1.Final.jar:/Users/lanren/.m2/repository/javax/activation/activation/1.1.1/activation-1.1.1.jar:/Users/lanren/.m2/repository/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.jar:/Users/lanren/.m2/repository/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar:/Users/lanren/.m2/repository/commons-codec/commons-codec/1.6/commons-codec-1.6.jar:/Users/lanren/.m2/repository/commons-io/commons-io/2.4/commons-io-2.4.jar:/Users/lanren/.m2/repository/net/jcip/jcip-annotations/1.0/jcip-annotations-1.0.jar:/Users/lanren/.m2/repository/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.jar:/Users/lanren/.m2/repository/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar:/Users/lanren/.m2/repository/org/jboss/resteasy/resteasy-client/3.0.12.Final/resteasy-client-3.0.12.Final.jar:/Users/lanren/.m2/repository/org/jboss/resteasy/resteasy-jackson-provider/3.0.12.Final/resteasy-jackson-provider-3.0.12.Final.jar:/Users/lanren/.m2/repository/org/codehaus/jackson/jackson-core-asl/1.9.12/jackson-core-asl-1.9.12.jar:/Users/lanren/.m2/repository/org/codehaus/jackson/jackson-mapper-asl/1.9.12/jackson-mapper-asl-1.9.12.jar:/Users/lanren/.m2/repository/org/codehaus/jackson/jackson-jaxrs/1.9.12/jackson-jaxrs-1.9.12.jar:/Users/lanren/.m2/repository/org/codehaus/jackson/jackson-xc/1.9.12/jackson-xc-1.9.12.jar:/Users/lanren/.m2/repository/org/jboss/resteasy/resteasy-netty4/3.0.12.Final/resteasy-netty4-3.0.12.Final.jar:/Users/lanren/.m2/repository/com/alibaba/dubbo/2.4.10/dubbo-2.4.10.jar:/Users/lanren/.m2/repository/org/jboss/netty/netty/3.2.5.Final/netty-3.2.5.Final.jar:/Users/lanren/.m2/repository/org/apache/curator/curator-recipes/2.9.1/curator-recipes-2.9.1.jar:/Users/lanren/.m2/repository/org/apache/curator/curator-framework/2.9.1/curator-framework-2.9.1.jar:/Users/lanren/.m2/repository/org/apache/curator/curator-client/2.9.1/curator-client-2.9.1.jar:/Users/lanren/.m2/repository/org/apache/zookeeper/zookeeper/3.4.6/zookeeper-3.4.6.jar:/Users/lanren/.m2/repository/jline/jline/0.9.94/jline-0.9.94.jar:/Users/lanren/.m2/repository/io/netty/netty/3.7.0.Final/netty-3.7.0.Final.jar:/Users/lanren/.m2/repository/com/google/guava/guava/16.0.1/guava-16.0.1.jar:/Users/lanren/.m2/repository/org/slf4j/slf4j-log4j12/1.7.21/slf4j-log4j12-1.7.21.jar:/Users/lanren/.m2/repository/log4j/log4j/1.2.17/log4j-1.2.17.jar:/Users/lanren/.m2/repository/junit/junit/4.10/junit-4.10.jar:/Users/lanren/.m2/repository/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar com.alipay.sofa.rpc.quickstart.QuickStartClient objc[39177]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/bin/java (0x10b7784c0) and /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/libinstrument.dylib (0x10cfc04e0). One of the two will be used. Which one is undefined. 2018-04-29 03:41:55,789 main INFO [com.alipay.sofa.rpc.context.RpcRuntimeContext:info:102] - Welcome! Loading SOFA RPC Framework : 5.3.1_20180419005237, PID is:39177 2018-04-29 03:41:55,837 main INFO [com.alipay.sofa.rpc.module.ModuleFactory:info:102] - Install Module: fault-tolerance 2018-04-29 03:41:55,863 main INFO [com.alipay.sofa.rpc.bootstrap.DefaultConsumerBootstrap:infoWithApp:122] - Refer consumer config : bolt://com.alipay.sofa.rpc.quickstart.HelloService: with bean id rpc-cfg-0 2018-04-29 03:41:55,938 main INFO [com.alipay.sofa.rpc.client.AllConnectConnectionHolder:infoWithApp:122] - Add provider of com.alipay.sofa.rpc.quickstart.HelloService, size is : 1 Sofa-Middleware-Log SLF4J : Actual binding is of type [ com.alipay.remoting Log4j ] 2018-04-29 03:41:55,972 CLI-CONN-com.alipay.sofa.rpc.quickstart.HelloService-3-T1 INFO [com.alipay.sofa.common.log:report:30] - Sofa-Middleware-Log SLF4J : Actual binding is of type [ com.alipay.remoting Log4j ] Exception in thread "main" com.alipay.sofa.rpc.core.exception.SofaRouteException: RPC-02306: 没有获得服务[com.alipay.sofa.rpc.quickstart.HelloService:1.0]的调用地址,请检查服务是否已经推送 2018-04-29 03:41:59,471 SOFA-RPC-ShutdownHook WARN [com.alipay.sofa.rpc.context.RpcRuntimeContext:warn:137] - SOFA RPC Framework catch JVM shutdown event, Run shutdown hook now. at com.alipay.sofa.rpc.client.AbstractCluster.noAvailableProviderException(AbstractCluster.java:419) at com.alipay.sofa.rpc.client.AbstractCluster.select(AbstractCluster.java:391) at com.alipay.sofa.rpc.client.FailoverCluster.doInvoke(FailoverCluster.java:64) at com.alipay.sofa.rpc.client.AbstractCluster.invoke(AbstractCluster.java:286) at com.alipay.sofa.rpc.client.ClientProxyInvoker.invoke(ClientProxyInvoker.java:83) at com.alipay.sofa.rpc.proxy.jdk.JDKInvocationHandler.invoke(JDKInvocationHandler.java:74) at com.sun.proxy.$Proxy5.sayHello(Unknown Source) at com.alipay.sofa.rpc.quickstart.QuickStartClient.main(QuickStartClient.java:42) 2018-04-29 03:41:59,474 SOFA-RPC-ShutdownHook INFO [com.alipay.sofa.rpc.bootstrap.DefaultConsumerBootstrap:infoWithApp:122] - UnRefer consumer config : bolt://com.alipay.sofa.rpc.quickstart.HelloService: with bean id rpc-cfg-0 2018-04-29 03:41:59,475 SOFA-RPC-ShutdownHook INFO [com.alipay.sofa.rpc.transport.ClientTransportFactory:info:97] - Shutdown all client transport now! 2018-04-29 03:41:59,476 SOFA-RPC-ShutdownHook INFO [com.alipay.sofa.rpc.module.ModuleFactory:info:102] - Uninstall Module: fault-tolerance 2018-04-29 03:41:59,476 SOFA-RPC-ShutdownHook WARN [com.alipay.sofa.rpc.context.RpcRuntimeContext:warn:142] - SOFA RPC Framework has been release all resources ...
Process finished with exit code 1
也是Mac运行。把实例代码拿到新的项目运行也会这样。 jdk1.8, sofa-rpc版本是5.3.1
QuickStartServer运行日志如下:
/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/bin/java "-javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=60714:/Applications/IntelliJ IDEA.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/lib/packager.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/lib/tools.jar:/Users/lanren/Documents/repositorys/git/sofa-rpc/example/target/test-classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/all/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/core/common/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/core/exception/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/core/api/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/core-impl/client/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/core-impl/codec/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/core-impl/filter/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/core-impl/log/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/core-impl/proxy/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/core-impl/transport/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/extension-impl/extension-common/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/extension-impl/api-compatible/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/extension-impl/bootstrap-bolt/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/extension-impl/bootstrap-dubbo/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/extension-impl/bootstrap-rest/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/extension-impl/fault-tolerance/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/extension-impl/log-common-tools/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/extension-impl/registry-local/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/extension-impl/registry-zk/target/classes:/Users/lanren/Documents/repositorys/git/sofa-rpc/extension-impl/remoting-bolt/target/classes:/Users/lanren/.m2/repository/com/google/protobuf/protobuf-java/3.1.0/protobuf-java-3.1.0.jar:/Users/lanren/Documents/repositorys/git/sofa-rpc/extension-impl/remoting-resteasy/target/classes:/Users/lanren/.m2/repository/com/alipay/sofa/bolt/1.4.1/bolt-1.4.1.jar:/Users/lanren/.m2/repository/com/alipay/sofa/common/sofa-common-tools/1.0.12/sofa-common-tools-1.0.12.jar:/Users/lanren/.m2/repository/org/slf4j/slf4j-api/1.7.21/slf4j-api-1.7.21.jar:/Users/lanren/.m2/repository/org/javassist/javassist/3.20.0-GA/javassist-3.20.0-GA.jar:/Users/lanren/.m2/repository/io/netty/netty-all/4.1.13.Final/netty-all-4.1.13.Final.jar:/Users/lanren/.m2/repository/com/alipay/sofa/hessian/3.3.0/hessian-3.3.0.jar:/Users/lanren/.m2/repository/org/jboss/resteasy/jaxrs-api/3.0.12.Final/jaxrs-api-3.0.12.Final.jar:/Users/lanren/.m2/repository/org/jboss/resteasy/resteasy-jaxrs/3.0.12.Final/resteasy-jaxrs-3.0.12.Final.jar:/Users/lanren/.m2/repository/org/jboss/spec/javax/annotation/jboss-annotations-api_1.1_spec/1.0.1.Final/jboss-annotations-api_1.1_spec-1.0.1.Final.jar:/Users/lanren/.m2/repository/javax/activation/activation/1.1.1/activation-1.1.1.jar:/Users/lanren/.m2/repository/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.jar:/Users/lanren/.m2/repository/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar:/Users/lanren/.m2/repository/commons-codec/commons-codec/1.6/commons-codec-1.6.jar:/Users/lanren/.m2/repository/commons-io/commons-io/2.4/commons-io-2.4.jar:/Users/lanren/.m2/repository/net/jcip/jcip-annotations/1.0/jcip-annotations-1.0.jar:/Users/lanren/.m2/repository/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.jar:/Users/lanren/.m2/repository/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar:/Users/lanren/.m2/repository/org/jboss/resteasy/resteasy-client/3.0.12.Final/resteasy-client-3.0.12.Final.jar:/Users/lanren/.m2/repository/org/jboss/resteasy/resteasy-jackson-provider/3.0.12.Final/resteasy-jackson-provider-3.0.12.Final.jar:/Users/lanren/.m2/repository/org/codehaus/jackson/jackson-core-asl/1.9.12/jackson-core-asl-1.9.12.jar:/Users/lanren/.m2/repository/org/codehaus/jackson/jackson-mapper-asl/1.9.12/jackson-mapper-asl-1.9.12.jar:/Users/lanren/.m2/repository/org/codehaus/jackson/jackson-jaxrs/1.9.12/jackson-jaxrs-1.9.12.jar:/Users/lanren/.m2/repository/org/codehaus/jackson/jackson-xc/1.9.12/jackson-xc-1.9.12.jar:/Users/lanren/.m2/repository/org/jboss/resteasy/resteasy-netty4/3.0.12.Final/resteasy-netty4-3.0.12.Final.jar:/Users/lanren/.m2/repository/com/alibaba/dubbo/2.4.10/dubbo-2.4.10.jar:/Users/lanren/.m2/repository/org/jboss/netty/netty/3.2.5.Final/netty-3.2.5.Final.jar:/Users/lanren/.m2/repository/org/apache/curator/curator-recipes/2.9.1/curator-recipes-2.9.1.jar:/Users/lanren/.m2/repository/org/apache/curator/curator-framework/2.9.1/curator-framework-2.9.1.jar:/Users/lanren/.m2/repository/org/apache/curator/curator-client/2.9.1/curator-client-2.9.1.jar:/Users/lanren/.m2/repository/org/apache/zookeeper/zookeeper/3.4.6/zookeeper-3.4.6.jar:/Users/lanren/.m2/repository/jline/jline/0.9.94/jline-0.9.94.jar:/Users/lanren/.m2/repository/io/netty/netty/3.7.0.Final/netty-3.7.0.Final.jar:/Users/lanren/.m2/repository/com/google/guava/guava/16.0.1/guava-16.0.1.jar:/Users/lanren/.m2/repository/org/slf4j/slf4j-log4j12/1.7.21/slf4j-log4j12-1.7.21.jar:/Users/lanren/.m2/repository/log4j/log4j/1.2.17/log4j-1.2.17.jar:/Users/lanren/.m2/repository/junit/junit/4.10/junit-4.10.jar:/Users/lanren/.m2/repository/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar com.alipay.sofa.rpc.quickstart.QuickStartServer objc[39193]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/bin/java (0x10b3ad4c0) and /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/libinstrument.dylib (0x10cbf54e0). One of the two will be used. Which one is undefined. 2018-04-29 03:48:41,575 main INFO [com.alipay.sofa.rpc.context.RpcRuntimeContext:info:102] - Welcome! Loading SOFA RPC Framework : 5.3.1_20180419005237, PID is:39193 2018-04-29 03:48:41,617 main INFO [com.alipay.sofa.rpc.module.ModuleFactory:info:102] - Install Module: fault-tolerance 2018-04-29 03:48:41,647 main INFO [com.alipay.sofa.rpc.bootstrap.DefaultProviderBootstrap:infoWithApp:122] - Export provider config : com.alipay.sofa.rpc.quickstart.HelloService: with bean id rpc-cfg-0 Sofa-Middleware-Log SLF4J : Actual binding is of type [ com.alipay.remoting Log4j ] 2018-04-29 03:48:41,873 main INFO [com.alipay.sofa.common.log:report:30] - Sofa-Middleware-Log SLF4J : Actual binding is of type [ com.alipay.remoting Log4j ]
@liangyuanpeng 可否在你的服务端启动之后,尝试 telnet localhost 12200
看下时候可以连上?
@khotyn quickstart代码模块显示设置了端口为9696,这个时候telnet 9696端口没问题,telnet 12200的话不通,显示的设置服务端端口为12200的话,telnet 12200是可以通的, 如果不显示的使用setport方法设置端口的话,虽然注释写的默认12200端口,但是启动服务端后,telnet 12200端口是不通的,并且客户端指定直连地址为 bolt://127.0.0.1:12200 在获取HelloService引用对象的时候报错。日志依然是没有获取到服务的调用地址,如下:
Exception in thread "main" com.alipay.sofa.rpc.core.exception.SofaRouteException: RPC-02306: 没有获得服务[com.alipay.sofa.rpc.quickstart.HelloService:1.0]的调用地址,请检查服务是否已经推送
最后我在debug启动服务端看了一下,虽然注释写的默认端口是12200,其实默认端口是22000。 在sofa-rpc-common模块中资源文件夹下rpc-config-default.json中配置的server.port.start属性,值是22000。 这个时候启动QuickStartClient,直连地址使用bolt://127.0.0.1:22000依然报错,报错日志跟上面是一样的。
Exception in thread "main" com.alipay.sofa.rpc.core.exception.SofaRouteException: RPC-02306: 没有获得服务[com.alipay.sofa.rpc.quickstart.HelloService:1.0]的调用地址,请检查服务是否已经推送
@liangyuanpeng 9696端口在本地有被其它进程占用吗。
@liangyuanpeng 麻烦直接把你的代码 push 到你的 github 仓库吧,我们来运行下看看.
@NeGnail 沒有被其他进程占用。 @leizhiyuan 我没有新写自己的代码,我运行的是sofa-rpc-example项目中com.alipay.sofa.rpc.quickstart包下的QuickStartServer和QuickStartClient。 启动流程是这样的,先启动QuickStartServer,保持开启状态,然后启动QuickStartClient类,就报错了。
Exception in thread "main" com.alipay.sofa.rpc.core.exception.SofaRouteException: RPC-02306: 没有获得服务[com.alipay.sofa.rpc.quickstart.HelloService:1.0]的调用地址,请检查服务是否已经推送
运行环境是10.13版本mac下的idea。
同步一下我调试代码获取到的信息 QuickStartClient启动的时候设置了直连,但是运行到extension-impl项目中extension-common项目模块的DefaultClientProxyInvoker类的decorateRequest方法的
RpcInvokeContext invokeCtx = RpcInvokeContext.peekContext();
这一行代码的时候获取到了null对象,以至于在运行到sofa-rpc-core-impl项目的AbstractCluster类的select方法根据key RpcConstants.HIDDEN_KEY_PINPOINT获取直连地址的时候获取不到生产者ProviderInfo对象,最终执行了
throw noAvailableProviderException(message.getTargetServiceUniqueName());
抛出了异常 不知道我这样的分析对不对呢
@liangyuanpeng 跟这个没关系,你按如下debug 1.使用9696端口,开启服务端,telnet 端口,看下能否 telnet 成功. 2.debug 客户端. 设置了 direct url(direct url 的端口记得设置对,也是9696) debug 代码位置
com.alipay.sofa.rpc.client.FailoverCluster#doInvoke
这个方法中的
ProviderInfo providerInfo = select(request, invokedProviderInfos);
走完这行,看下这个 providerInfo 是否有,并贴 出值,同时继续 debug 这个方法中
com.alipay.sofa.rpc.client.AbstractCluster#sendMsg
的
ClientTransport clientTransport = connectionHolder.getAvailableClientTransport(providerInfo);
,这个逻辑可以走进去 debug 下, 看下从连接池中获取的clientTransport是否 ok
@leizhiyuan 1.使用9696端口,开启服务端,端口可以telnet 成功 2.代码执行到
ProviderInfo providerInfo = select(request, invokedProviderInfos);
抛出异常,方法执行情况如下:
执行到
targetIP = (String) RpcInternalContext.getContext().getAttachment(RpcConstants.HIDDEN_KEY_PINPOINT);
获取到的直连targetIP为空,继续执行
ClientTransport transport = selectByProvider(message, providerInfo);
transport对象为空,退出循环,执行抛出异常代码行:
throw noAvailableProviderException(message.getTargetServiceUniqueName());
@liangyuanpeng debug ClientTransport transport = selectByProvider(message, providerInfo);
这行的时候,看一下ConnectionHolder
这个类里面的 aliveConnections
,retryConnections
值。
@NeGnail 都是空的,size=0
.setDirectUrl("bolt://127.0.0.1:9696"); // 指定直连地址 指定了这种地址
先 debug 客户端的
com.alipay.sofa.rpc.bootstrap.DefaultConsumerBootstrap#subscribe
这个方法.预期会在地址管理器中将设置的 directUrl 放进去.
然后
应该在com.alipay.sofa.rpc.client.router.DirectUrlRouter#route
这个路由链中取到地址的. debug 一下这个方法.
@leizhiyuan com.alipay.sofa.rpc.client.router.DirectUrlRouter#route方法执行情况
providerInfos = current;
方法返回的providerInfos size=1,也就是设置的bolt://127.0.0.1:9696,
originUrl=bolt://127.0.0.1:9696, host="127.0.0.1" port=9696
@liangyuanpeng 那下面继续看
应该在com.alipay.sofa.rpc.client.router.DirectUrlRouter#route
的结果呢.
@leizhiyuan 结果是正常的,
if (CommonUtils.isEmpty(providerInfos)) { throw noAvailableProviderException(message.getTargetServiceUniqueName()); } if (CommonUtils.isNotEmpty(invokedProviderInfos) && providerInfos.size() > invokedProviderInfos.size()) { // 总数大于已调用数 providerInfos.removeAll(invokedProviderInfos);// 已经调用异常的本次不再重试 }
两个判断代码都正常执行
ok, 那你继续 debug,最终是
com.alipay.sofa.rpc.client.AbstractCluster#select(com.alipay.sofa.rpc.core.request.SofaRequest, java.util.List<com.alipay.sofa.rpc.client.ProviderInfo>)
这个方法走到的时候.
应该进入这段逻辑,并且providerInfos 是一个.(你看到的那个 targetUrl为空是合理的, 不是这个 directurl)
do {
// 再进行负载均衡筛选
providerInfo = loadBalancer.select(message, providerInfos);
//上面这一行走完应该providerInfo不为空.
ClientTransport transport = selectByProvider(message, providerInfo);
//重点 debug 下上面这里.
if (transport != null) {
return providerInfo;
}
providerInfos.remove(providerInfo);
} while (!providerInfos.isEmpty());
你重点执行这个代码.
‘selectByProvider(message, providerInfo);’ 这个 @liangyuanpeng 之前已经debug过了,是空。
应该是直连地址生效了,但是连接没有建立。
‘com.alipay.sofa.rpc.client.AbstractCluster#updateAllProviders’ 看一下这个方法,跟下里面的这两行代码,会分别将直连的‘bolt://127.0.0.1:9696’的地址和连接生效到缓存中:
addressHolder.updateAllProviders(providerGroups); connectionHolder.updateAllProviders(providerGroups);
怀疑是客户建联过程比较慢,调用的时候,建联没有成功.在等待重试期间的调用失败.
@liangyuanpeng
麻烦将QuickStartClient 代码修改如下.再测试下.
public class QuickStartClient {
public static void main(String[] args) {
ConsumerConfig<HelloService> consumerConfig = new ConsumerConfig<HelloService>()
.setInterfaceId(HelloService.class.getName()) // 指定接口
.setProtocol("bolt") // 指定协议
.setDirectUrl("bolt://127.0.0.1:12200"); // 指定直连地址
HelloService helloService = consumerConfig.refer();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
while (true) {
try {
System.out.println(helloService.sayHello("world"));
Thread.sleep(2000);
} catch (Exception e) {
}
}
}
}
@NeGnail 执行
addressHolder.updateAllProviders(providerGroups);
正常,执行
connectionHolder.updateAllProviders(providerGroups);
创建连接的时候,线程池关闭了连接还没有建立好。 @leizhiyuan 的怀疑是对的,让rpc慢一点调用就正常了。
@liangyuanpeng 好的,这个用例我稍后改一下.再有问题开新 issue. 谢谢
@liangyuanpeng 也可以用 consumerConfig.setConnectTimeout(10000);
。让建立连接的时间等待久一点。就不用再sleep了。
@NeGnail 明白了,这种会更好:thumbsup:
https://github.com/alipay/sofa-rpc/wiki/Getting-Started-With-RPC 按照这个文档里给出的代码,mac上运行异常