我最近嘗試使用Thrift將Python連接到Java。我已經(jīng)在Python(PyPy)上編寫了服務(wù)器。我還寫了一個(gè)有效的參考客戶。然后,我編寫了一個(gè)Java客戶端,該客戶端僅產(chǎn)生“拒絕連接”異常。這怎么了 (最近我還發(fā)現(xiàn)了一個(gè)封閉的問(wèn)題,該問(wèn)題的特征是https://issues.apache.org/jira/browse/THRIFT-1888)PS。使用過(guò)的Thrift 0.9版本,PyPy 2.0 beta 2,Java 1.7.0_11節(jié)儉namespace java com.testnamespace python testservice TestPing { void ping()} Python服務(wù)器代碼class TestPingHandler: def ping(self): passhandler = TestPingHandler()processor = TestPing.Processor(handler)transport = TSocket.TServerSocket(port=9091)tfactory = TTransport.TBufferedTransportFactory()pfactory = TBinaryProtocol.TBinaryProtocolFactory()server = TServer.TThreadedServer(processor, transport, tfactory, pfactory)print 'Starting the server...' server.serve()print 'done.' Java客戶端代碼TTransport transport;transport = new TSocket("localhost", 9091);transport.open();TProtocol protocol = new TBinaryProtocol(transport);client = new TestPing.Client(protocol);client.ping();參考Python客戶端代碼transport = TSocket.TSocket('localhost', 9091)transport = TTransport.TBufferedTransport(transport)protocol = TBinaryProtocol.TBinaryProtocol(transport)client = TestPing.Client(protocol)transport.open()client.ping()transport.close()
2 回答

慕尼黑8549860
TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊
我遇到過(guò)同樣的問(wèn)題。用ip替換“ localhost”來(lái)修復(fù)它。
原因是:Python使用TCPV6,而Java使用TCP。
Python: transport = TSocket.TServerSocket(host="127.0.0.1", port = 9091)
Java的: transport = new TSocket("127.0.0.1", 9091);

jeck貓
TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊
transport = new TSocket("localhost", 9091);
TProtocol protocol = new TBinaryProtocol(transport);
transport.open();
This should work...
添加回答
舉報(bào)
0/150
提交
取消