You should immediately stop trying to do too much, and eliminate pyjamas from the equation. Download a jsonrpc client (eg. python-json-rpc) and add some python-based client-side code to the server-side testing. As you are a good web developer, who follows good code standard practices, this should have already occurred to you and it just temporarily slipped your mind that there should be an automated test suite based on something like jsonrpclib.tgz which you can use to prove to yourself that the JSONRPC server-side services of your app are absolutely perfect. You already considered the distinct advantages of being able to do automated tests such as pretending to be a user, interacting with the server-side forms, adding and deleting of records etc., but you had juuust not quite got round to doing that yet. well - now you have to.

Once you have demonstrated to your satisfaction that there is nothing wrong with the JSONRPC services, you can then reintroduce Pyjamas, as a second client, into the equation. The difference between then and now is that you now know that there is nothing wrong with the JSONRPC services, server-side. So, anything that's wrong has to be something like you've specified the wrong URL in the use of the pyjamas.JSONService module. Check that the URL is the same as the one that you used in the client-side usage of the python jsonrpclib.

You have to remember that you are using AJAX, with JSONRPC. So, the same standard rules apply: you can not access AJAX URLs other than those which match the URL from where the web browser downloaded the HTML and the Javascript. In other words, if your app is downloaded from http://fred.foo.com/myapp.html, then you can not put http://fred.foo.com:8080/jsonservice as the URL for the JSONRPC service, you can not put http://somewhere.else.com as the URL. It has to be http://fred.foo.com/somewhere.

Welcome to the world where people used to use AJAX to do cross-site scripting attacks, downloading viruses and doing phishing attacks and other crap, but can't any more, and you, as a developer, have to pay for that.