From: Adam T. W. <ad...@mo...> - 2007-10-23 14:05:26
|
python-2.5.1-39 / jython-2.2-155 I've used Python a fair amount to work with XML-RPC servers ( primarily http://code.google.com/p/zogi/wiki/Root ); now I'd like to do the same from Jython so I can also connect to an Informix/DB2 database using zxJDBC. The connection to the database works well, but if I try and use the xmlrpclib provided by the Python environment then Jython crashes. --------- import xmlrpclib server =3D xmlrpclib.Server('http://****:*****@ogo/zidestore/so/*****/') print server.zogi.getObjectById(19100, 65535) --------- Traceback (innermost last): File "ifxConnect.jy", line 3, in ? File "/usr/share/jython/Lib/xmlrpclib.py", line 824, in __call__ File "/usr/share/jython/Lib/xmlrpclib.py", line 974, in _ServerProxy__request File "/usr/share/jython/Lib/xmlrpclib.py", line 836, in request File "/usr/share/jython/Lib/xmlrpclib.py", line 864, in make_connection File "/usr/share/jython/Lib/httplib.py", line 70, in ? File "/usr/share/jython/Lib/mimetools.py", line 6, in ? File "/usr/share/jython/Lib/tempfile.py", line 148, in ? File "/usr/share/jython/Lib/tempfile.py", line 160, in TemporaryFileWrapper AttributeError: class 'org.python.modules.os' has no attribute 'unlink' So what is the easiest way to use an XML-RPC service from Jython? |
From: Adam T. W. <ad...@mo...> - 2007-10-23 17:51:38
|
> > The connection to the database works well, but if I try and use the > > xmlrpclib provided by the Python environment then Jython crashes. > IIUC, you have python xmlrpc server=20 No, I have a SOPE XML-RPC server (Objective-C), which works fine from CPython and .NET > and you want to use jython 2.2 xmlrpc client. Is this correct? Yes, I need to make XML-RPC calls from Jython; or I need to know if isn't possible/supported. Google is leading me to believe the latter is true, there are lots of post about this issue scattered around, none with resolutions.=20 |
From: Adam T. W. <ad...@mo...> - 2007-10-23 18:55:41
|
> > > The connection to the database works well, but if I try and use the > > > xmlrpclib provided by the Python environment then Jython crashes. > > IIUC, you have python xmlrpc server=20 > No, I have a SOPE XML-RPC server (Objective-C), which works fine from > CPython and .NET > > and you want to use jython 2.2 xmlrpc client. Is this correct? > Yes, I need to make XML-RPC calls from Jython; or I need to know if > isn't possible/supported. Google is leading me to believe the latter > is true, there are lots of post about this issue scattered around, none > with resolutions.=20 While I got it to work by poking around and using Java examples; it isn't very Pythonic since I had to import lots of Java, but it does work. import org.apache.xmlrpc.client as xmlrpc from java.util import Vector from java.util import Hashtable import java.net client =3D xmlrpc.XmlRpcClient() config =3D xmlrpc.XmlRpcClientConfigImpl() config.setServerURL(java.net.URL('http://gourd-amber/zidestore/so/*******/'= )) config.basicUserName =3D '*****************' config.basicPassword =3D '*****************' client.setConfig(config) qualifier =3D Hashtable() qualifier['key'] =3D 'firstname' qualifier['conjunction'] =3D 'AND' qualifier['expression'] =3D 'LIKE' qualifier['value'] =3D 'A%' criteria =3D Vector() criteria.add(qualifier) params =3D Vector() params.add('Contact') params.add(criteria) params.add(65535) results =3D client.execute("zogi.searchForObjects", params) for result in results: print 'ObjectId:%s %s, %s' % ( result['objectId'],=20 result['lastName'], result['firstName']) --=20 Adam Tauno Williams, Network & Systems Administrator Consultant - http://www.whitemiceconsulting.com Developer - http://www.opengroupware.org |
From: Frank C. <fc...@pu...> - 2007-10-23 20:34:48
|
You may find PushToTest TestMaker useful. It uses Jython as a scripting language and a Java library of protocol handlers - XML-RPC included. Details at http://www.pushtotest.com. -Frank On Oct 23, 2007, at 11:55 AM, Adam Tauno Williams wrote: >>>> The connection to the database works well, but if I try and use the >>>> xmlrpclib provided by the Python environment then Jython crashes. >>> IIUC, you have python xmlrpc server >> No, I have a SOPE XML-RPC server (Objective-C), which works fine from >> CPython and .NET >>> and you want to use jython 2.2 xmlrpc client. Is this correct? >> Yes, I need to make XML-RPC calls from Jython; or I need to know if >> isn't possible/supported. Google is leading me to believe the >> latter >> is true, there are lots of post about this issue scattered >> around, none >> with resolutions. > > While I got it to work by poking around and using Java examples; it > isn't very Pythonic since I had to import lots of Java, but it does > work. > > import org.apache.xmlrpc.client as xmlrpc > from java.util import Vector > from java.util import Hashtable > import java.net > > client = xmlrpc.XmlRpcClient() > config = xmlrpc.XmlRpcClientConfigImpl() > config.setServerURL(java.net.URL('http://gourd-amber/zidestore/so/ > *******/')) > config.basicUserName = '*****************' > config.basicPassword = '*****************' > client.setConfig(config) > > qualifier = Hashtable() > qualifier['key'] = 'firstname' > qualifier['conjunction'] = 'AND' > qualifier['expression'] = 'LIKE' > qualifier['value'] = 'A%' > criteria = Vector() > criteria.add(qualifier) > > params = Vector() > params.add('Contact') > params.add(criteria) > params.add(65535) > results = client.execute("zogi.searchForObjects", params) > for result in results: > print 'ObjectId:%s %s, %s' % ( > result['objectId'], > result['lastName'], > result['firstName']) > -- > Adam Tauno Williams, Network & Systems Administrator > Consultant - http://www.whitemiceconsulting.com > Developer - http://www.opengroupware.org > ---------------------------------------------------------------------- > --- > This SF.net email is sponsored by: Splunk Inc. > Still grepping through log files to find problems? Stop. > Now Search log events and configuration files using AJAX and a > browser. > Download your FREE copy of Splunk now >> http://get.splunk.com/ > _______________________________________________ > Jython-users mailing list > Jyt...@li... > https://lists.sourceforge.net/lists/listinfo/jython-users -- Frank Cohen, PushToTest, http://www.PushToTest.com, phone 408 871 0122 TestMaker open-source test automation |
From: Adam T. W. <ad...@mo...> - 2007-10-23 19:04:12
|
> > > > The connection to the database works well, but if I try and use the > > > > xmlrpclib provided by the Python environment then Jython crashes. > > > IIUC, you have python xmlrpc server > > No, I have a SOPE XML-RPC server (Objective-C), which works fine from > > CPython and .NET > > > and you want to use jython 2.2 xmlrpc client. Is this correct? > > Yes, I need to make XML-RPC calls from Jython; or I need to know if > > isn't possible/supported. Google is leading me to believe the latter > > is true, there are lots of post about this issue scattered around, non= e > > with resolutions. > I just wrote a small xmlrpc server and client. I then ran the server > using python and client using jython. It worked without issues. > *********serv.py********** > from SimpleXMLRPCServer import SimpleXMLRPCServer > server =3D SimpleXMLRPCServer(("localhost", 8000)) > def add(x,y): > return x + y > server.register_function(add) > server.serve_forever() > *********cli.py************ > import xmlrpclib > s =3D xmlrpclib.ServerProxy('http://localhost:8000', verbose=3DTrue) > print s.add(2,3) # Returns 5 > ***************** > I will try to check your stack trace more and see if I can find any > thing. BTW, the line numbers do not match in my xmlrpclib and the ones > in your stack trace. You are using the latest released jython or is it > from the trunk?=20 As packaged by openSUSE 10.3. =20 python-2.5.1-39 jython-2.2-155 java version "1.5.0_13" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_13-b05) Java HotSpot(TM) Server VM (build 1.5.0_13-b05, mixed mode) The jython package includes a /usr/share/jython/Lib/xmlrpclib.py file; 1019 lines, header of the file is - # # XML-RPC CLIENT LIBRARY # $Id: xmlrpclib.py,v 1.15.4.1 2003/07/12 07:53:52 loewis Exp $ > md5sum /usr/share/jython/Lib/xmlrpclib.py b5dc6fbb2616c7a9da8b0ced28ef882f /usr/share/jython/Lib/xmlrpclib.py |
From: Raghuram D. <dra...@gm...> - 2007-10-23 19:55:11
|
On 10/23/07, Adam Tauno Williams <ad...@mo...> wrote: > > --------- > import xmlrpclib > server = xmlrpclib.Server('http://****:*****@ogo/zidestore/so/*****/') > print server.zogi.getObjectById(19100, 65535) > --------- > Traceback (innermost last): > File "ifxConnect.jy", line 3, in ? > File "/usr/share/jython/Lib/xmlrpclib.py", line 824, in __call__ > File "/usr/share/jython/Lib/xmlrpclib.py", line 974, in > _ServerProxy__request > File "/usr/share/jython/Lib/xmlrpclib.py", line 836, in request > File "/usr/share/jython/Lib/xmlrpclib.py", line 864, in > make_connection > File "/usr/share/jython/Lib/httplib.py", line 70, in ? > File "/usr/share/jython/Lib/mimetools.py", line 6, in ? > File "/usr/share/jython/Lib/tempfile.py", line 148, in ? > File "/usr/share/jython/Lib/tempfile.py", line 160, in > TemporaryFileWrapper > AttributeError: class 'org.python.modules.os' has no attribute 'unlink' Based on your offline mentioning of SuSE 10.3 jython package, I downloaded the jython rpm. It seems that SuSE is explicitly packaging python 2.2's Lib and the actual jython packaged does not have Lib/tempfile.py. So a fix made specifically for this problem is missed. Specifically, this is the diff for tempfile.py ******************* 0a1,3 > # XXX added to fix jython specific problem. Should be removed when real > # problem is fixed. > import java.io.File 159a163,170 > > # XXX: unlink = os.unlink does not work in jython, really that should be fixed and > # the original python class could be used. > if os.name == "java": > def unlink(self, path): > if not java.io.File(path).delete(): > raise OSError(0, "couldn't delete file", path) > else: ******************* I suggest that you download latest available jython and try it. On a side note, SuSE packaging doesn't sound right. Thanks, Raghu |