2013-02-25 97 views
0

我想在JRuby 1.7.3上使用Thrift客户端。错误消息始终是拒绝连接:JRuby上的Thrift客户端1.7.3

Could not connect to ::1:55674: Connection refused - Connection refused 

我总是可以在ruby-1.9.3上成功连接。经过多次Google搜索之后,看起来Thrift客户端与JRuby有问题,但它应该是fixed in 1.6.7

我该如何解决这个问题?这是一个已知的问题?

回答

1

找到了!

我正在使用::1创建我的Thrift::ServerSocket。 MRI客户将这项工作(如果主机设置为localhost::1,或127.0.0.1无所谓。JRuby的客户端将无法,并会抱怨拒绝连接。

接下来,我用::1创建我Thrift::Client。再,JRuby的不喜欢它。

每一件事更改为localhost固定它。我真的不明白是怎么回事,但Java显然是使用IPv6。

>lsof -i :56990 
COMMAND PID USER FD TYPE SIZE/OFF NODE NAME 
java 4441 codex 31u IPv6 0t0 TCP localhost:56990 (LISTEN) 
java 4441 codex 36u IPv6 0t0 TCP localhost:56990->localhost:50439 (ESTABLISHED) 
java 4875 codex 31u IPv6 0t0 TCP localhost:50439->localhost:56990 (ESTABLISHED) 
+0

呀,你可以尝试设置从JRuby(或直接在JAVA_OPTS wo ):JRUBY_OPTS = -J-Djava.net.preferIPv4Stack = true'有关更多信息,请参阅JRuby问题[IPv4应优先于IPv6](https://github.com/jruby/jruby/issues/775)详情。 – likethesky 2013-10-29 21:38:39