This proxy allows clients to access xmlBlaster with XMLRPC.

See http://xml.apache.org/xmlrpc/

   XMLRPC Library for Java
   Copyright (c) 1999 Hannes Wallnoefer, hannes@helma.at
   (http://helma.at/hannes/xmlrpc/)

and http://xmlrpc-c.sourceforge.net/xmlrpc-howto/xmlrpc-howto.html

Install:
========

  Add xmlBlaster/lib/xmlrpc.jar to your CLASSPATH.


  Make sure to have the following set in your $HOME/xmlBlaster.properties file:

   ProtocolPlugin[XMLRPC][1.0]=org.xmlBlaster.protocol.xmlrpc.XmlRpcDriver
   CbProtocolPlugin[XMLRPC][1.0]=org.xmlBlaster.protocol.xmlrpc.CallbackXmlRpcDriver

  This loads XmlRpc support into xmlBlaster.
  It should be there already, since it is default.


Todo:
=====
  Add filter to allow only wanted clients:
     acceptClient(java.lang.String address)
     setParanoid(boolean p)
  See API of org.apache.xmlrpc.WebServer
  Make addresses configurable with xmlBlaster.properties


Test the driver:
================

   java org.xmlBlaster.Main

   java javaclients.ClientSub -dispatch/connection/protocol XMLRPC -dispatch/callback/protocol XMLRPC

   If you allways want to use XMLRPC instead of CORBA put this line
   into xmlBlaster.properties:

       dispatch/connection/protocol=XMLRPC
       dispatch/callback/protocol=XMLRPC


To further Test the driver:
===========================
   java org.xmlBlaster.Main -call true

   java org.apache.xmlrpc.XmlRpcClient http://localhost:8080 authenticate.login "ben" "secret" "<qos></qos>" "mySessionId"

   java org.apache.xmlrpc.XmlRpcClient http://localhost:8080 xmlBlaster.subscribe "mySessionId" "<key oid='__sys__Login'></key>" "<qos></qos>"

   java org.apache.xmlrpc.XmlRpcClient http://localhost:8080 xmlBlaster.subscribe "mySessionId" "<key oid='cpuinfo'></key>" "<qos></qos>"

and the proxy receives the updates.


SSL Support (from the mailing list):
====================================

Hello all,

We have been successful here in using SSL with Helma's XmlRpcClient with the
following few steps:

1. Add the following flag:
-Djava.protocol.handler.pkgs=com.sun.net.ssl.internal.www.protocol
to the main JVM invocation command for the application.
2. Add the line:
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
to be executed once in the init of the app.
3. Add the JSSE extension from
http://java.sun.com/products/jsse/install.html to our JVM.
4. Modify the URL we POST to use https instead of http, of course :-)

With XmlRpcClientLite, the modification are more complex and involve
changing the XmlRpcClientLite
constructor to use a Secure Socket, i.e.:
...
SSLSocketFactory factory = (SSLSocketFactory)SSLSocketFactory.getDefault();
SSLSocket sslSocket = (SSLSocket)factory.createSocket(hostname, port);
sslSocket.startHandshake();
...
Maybe Hannes will add SSL support to XmlRpcClientLite in the future.
I have source code that works, if anyone is interested.

Hope that helped,

Amir Eliaz
eliaz@idcide.com
