Re: [Py4j-users] Error when accessing jvm for basic sample (take 2)
Status: Beta
Brought to you by:
barthe
From: Barthelemy D. <ba...@cs...> - 2011-10-24 10:30:42
|
Hi Bahman, Just to make sure, are you trying to start both the client and the server on the same host? I think this is a bug that I fixed in the forthcoming version of Py4J (0.8). I'm not super familiar with windows networking but I think the Java server is listening on 192.168.1.39 while the Python client is trying to connect to 127.0.0.1 (localhost). In the new version of Py4J, the server always listen to localhost by default (instead of all interfaces/ips, which was bad security), but this can be configured. In the meantime, you could try specifying an ip in the Python client: from py4j.java_gateway import GatewayClient, JavaGateway g_client = GatewayClient(address='192.168.1.39') gateway = JavaGateway(gateway_client=g_client) Does that work? Barthélémy On 10/23/2011 10:04 PM, bn wrote: > Hi, > > I seem to be having this issue also, having written a small > program which runs fine in linux but gets 'connection refused' in win7 64bit. > > So I tried the AdditionApplication example with the win7 > firewall turned off (see console A output below), then attempted to connect from python where I also get a socket.error 10061 (console B output below). As you can see netstat shows that 192.168.1.39:25333 status is 'LISTENING' after I exit python. > > Trying a different port gives the same error. Initially I thought it may somehow have to do with mixing 32bit java and 64bit python, but switching python to 32bit didn't help. I don't know much about sockets and would appreciate any insight here. > > thanks, > -Bahman > > --------------------------- > console A: > --------------------------- > >> java -version > java version "1.6.0_12" > Java(TM) SE Runtime Environment (build 1.6.0_12-b04) > Java HotSpot(TM) Client VM (build 11.2-b01, mixed mode, sharing) > >> netsh advfirewall set allprofiles state off > Ok. > >> java -cp lib\py4j0.7.jar;AdditionApplication-0.1.jar AdditionApplication > > --------------------------- > console B: > --------------------------- > >> python > Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32 > Type "help", "copyright", "credits" or "license" for more information. >>>> from py4j.java_gateway import JavaGateway >>>> gateway = JavaGateway() >>>> a = gateway.entry_point >>>> a.addition(1,2) > Traceback (most recent call last): > File "<stdin>", line 1, in<module> > File "F:\Programs\Python27\lib\site-packages\py4j-0.7-py2.7.egg\py4j\java_gateway.py", line 430, in __call__ > answer = self.gateway_client.send_command(command) > File "F:\Programs\Python27\lib\site-packages\py4j-0.7-py2.7.egg\py4j\java_gateway.py", line 257, in send_command > connection = self._get_connection() > File "F:\Programs\Python27\lib\site-packages\py4j-0.7-py2.7.egg\py4j\java_gateway.py", line 213, in _get_connection > connection = self._create_connection() > File "F:\Programs\Python27\lib\site-packages\py4j-0.7-py2.7.egg\py4j\java_gateway.py", line 220, in _create_connection > connection.start() > File "F:\Programs\Python27\lib\site-packages\py4j-0.7-py2.7.egg\py4j\java_gateway.py", line 318, in start > self.socket.connect((self.address, self.port)) > File "F:\Programs\Python27\lib\socket.py", line 224, in meth > return getattr(self._sock,name)(*args) > socket.error: [Errno 10061] No connection could be made because the target machine actively refused it >>>> ^Z > >> netstat -an > > Active Connections > > Proto Local Address Foreign Address State > TCP 0.0.0.0:135 0.0.0.0:0 LISTENING > TCP 0.0.0.0:445 0.0.0.0:0 LISTENING > TCP 0.0.0.0:554 0.0.0.0:0 LISTENING > TCP 0.0.0.0:2869 0.0.0.0:0 LISTENING > TCP 0.0.0.0:10243 0.0.0.0:0 LISTENING > TCP 0.0.0.0:49152 0.0.0.0:0 LISTENING > TCP 0.0.0.0:49153 0.0.0.0:0 LISTENING > TCP 0.0.0.0:49154 0.0.0.0:0 LISTENING > TCP 0.0.0.0:49155 0.0.0.0:0 LISTENING > TCP 0.0.0.0:49156 0.0.0.0:0 LISTENING > TCP 0.0.0.0:49157 0.0.0.0:0 LISTENING > TCP 0.0.0.0:49164 0.0.0.0:0 LISTENING > TCP 0.0.0.0:54465 0.0.0.0:0 LISTENING > TCP 127.0.0.1:1299 0.0.0.0:0 LISTENING > TCP 127.0.0.1:49160 0.0.0.0:0 LISTENING > TCP 127.0.0.1:49293 127.0.0.1:49294 ESTABLISHED > TCP 127.0.0.1:49294 127.0.0.1:49293 ESTABLISHED > TCP 127.0.0.1:49297 127.0.0.1:49298 ESTABLISHED > TCP 127.0.0.1:49298 127.0.0.1:49297 ESTABLISHED > TCP 127.0.0.1:49570 127.0.0.1:49160 TIME_WAIT > TCP 192.168.1.39:139 0.0.0.0:0 LISTENING > TCP 192.168.1.39:25333 0.0.0.0:0 LISTENING > TCP 192.168.1.39:49360 168.143.242.112:80 CLOSE_WAIT > TCP 192.168.1.39:49563 72.14.204.147:80 ESTABLISHED > TCP [::]:135 [::]:0 LISTENING > TCP [::]:445 [::]:0 LISTENING > TCP [::]:554 [::]:0 LISTENING > TCP [::]:2869 [::]:0 LISTENING > TCP [::]:10243 [::]:0 LISTENING > TCP [::]:49152 [::]:0 LISTENING > TCP [::]:49153 [::]:0 LISTENING > TCP [::]:49154 [::]:0 LISTENING > TCP [::]:49155 [::]:0 LISTENING > TCP [::]:49156 [::]:0 LISTENING > TCP [::]:49157 [::]:0 LISTENING > TCP [::]:49164 [::]:0 LISTENING > TCP [::]:54465 [::]:0 LISTENING > > --------------------------- > AdditionApplication.java: > --------------------------- > import py4j.GatewayServer; > > public class AdditionApplication { > > public int addition(int first, int second) { > return first + second; > } > > public static void main(String[] args) { > AdditionApplication app = new AdditionApplication(); > // app is now the gateway.entry_point > GatewayServer server = new GatewayServer(app); > server.start(); > } > } > --------------------------- > > > ------------------------------------------------------------------------------ > The demand for IT networking professionals continues to grow, and the > demand for specialized networking skills is growing even more rapidly. > Take a complimentary Learning@Cisco Self-Assessment and learn > about Cisco certifications, training, and career opportunities. > http://p.sf.net/sfu/cisco-dev2dev > _______________________________________________ > Py4j-users mailing list > Py4...@li... > https://lists.sourceforge.net/lists/listinfo/py4j-users |