Yes, I agree a Java-free environment would have been very nice to have, especially for the IBM i. Most RPG programmers can write RPG-CGI programs; it's simply a matter of a couple of API calls. And setting up the HTTP server for CGI is a snap. A proxy-free request mechanism is definitely something to ask for. Even if it were sort of a "raw" service: execute the supplied URL with the protocol removed rather than the proxy, and make the service extract the data and format the return value as a JSON string. That would be the price you pay to avoid Java.
The browser forces what is called a "same origin" restriction on Ajax calls. That means that JavaScript code that wants to make an XmlHttpRequest call it can only go back to the same server+portnumber combination where it was originally served up from. This is to avoid hackers performing cross-site scripting (XSS) attacks on unsuspecting clients.
When you deploy your EGL Rich UI application on WAS or Tomcat, the EGL tooling will automatically create a servlet for you and deploy it with your RUI application in the same EAR. The servlet is resolved as __proxy, and is used to do cross-site Ajax calls.
When you deploy your application to the local file system (which is one of the options), you can take the resulting files, and copy/ftp them yourself to an existing Apache HTTP server (or IIS). The challenge that remains is how to serve up the service calls. When I deployed my conference schedulers on http://eglplanner.com, I wrote such an Ajax proxy in PHP (which is really not hard at all). RBD and EGL CE do not support that in our current products.
See http://www-949.ibm.com/software/rational/cafe/docs/DOC-3247 for a PHP proxy
You can also download the proxy here: http://eglplanner.com/rsc2009/___proxy.zip
In order to use the PHP proxy, instead of the default __proxy, add the following JavaScript code to any externalType you define in your application: http://eglplanner.com/rsc2009/UsePhpProxy.js
So really all I need to do is write my own RPG-CGI proxy. It can process the calls and call the appropriate program. I just need to make it respond to the ___proxy request.
Or, as you've written here, I can write my own version of the doInvokeInternal routine. That might also be a cool option, because I'd be able to pass parameters however I wanted, including using parameters on the query string (?parm1=this&parm2=that). Either way would work, because it's basically a one-time infrastructure effort.
Okay, maybe I haven't written myself completely into a corner
.

Too bad Joe. I also got all excited for a Java-free RUI. Maybe in time IBM will include a proxy-free call mechanism for HTTP requests...