Using XML-RPC with Java

XML-RPC HOWTO
Prev |  | Next

# 9. Using XML-RPC with Java

Hannes Wallnöfer has provided an excellent implementation of XML-RPC for Java.

To install it, download the distribution, unzip it, and add the `*.jar` files to your `CLASSPATH`. On a Unix system, you can do this by typing:

    bash$ unzip xmlrpc-java.zip
    bash$ cd xmlrpc-java/lib
    bash$ CLASSPATH=`pwd`/openxml-1.2.jar:`pwd`/xmlrpc.jar:$CLASSPATH

## 9.1. A Java Client

Save the following program in a file named `JavaClient.java`.

    import java.util.Vector;
    import java.util.Hashtable;
    import helma.xmlrpc.*;

    public class JavaClient {

        // The location of our server.
        private final static String server_url =
            "http://xmlrpc-c.sourceforge.net/api/sample.php";

        public static void main (String [] args) {
            try {

                // Create an object to represent our server.
                XmlRpcClient server = new XmlRpcClient(server_url);

                // Build our parameter list.
                Vector params = new Vector();
                params.addElement(new Integer(5));
                params.addElement(new Integer(3));

                // Call the server, and get our result.
                Hashtable result =
                    (Hashtable) server.execute("sample.sumAndDifference", params);
                int sum = ((Integer) result.get("sum")).intValue();
                int difference = ((Integer) result.get("difference")).intValue();

                // Print out our result.
                System.out.println("Sum: " + Integer.toString(sum) +
                                   ", Difference: " +
                                   Integer.toString(difference));

            } catch (XmlRpcException exception) {
                System.err.println("JavaClient: XML-RPC Fault #" +
                                   Integer.toString(exception.code) + ": " +
                                   exception.toString());
            } catch (Exception exception) {
                System.err.println("JavaClient: " + exception.toString());
            }
        }
    }

## 9.2. A Stand-Alone Java Server

Save the following program in a file named `JavaServer.java`.

    import java.util.Hashtable;
    import helma.xmlrpc.*;

    public class JavaServer {

        public JavaServer () {
            // Our handler is a regular Java object. It can have a
            // constructor and member variables in the ordinary fashion.
            // Public methods will be exposed to XML-RPC clients.
        }

        public Hashtable sumAndDifference (int x, int y) {
            Hashtable result = new Hashtable();
            result.put("sum", new Integer(x + y));
            result.put("difference", new Integer(x - y));
            return result;
        }

        public static void main (String [] args) {
            try {

                // Invoke me as <http://localhost:8080/RPC2>.
                WebServer server = new WebServer(8080);
                server.addHandler("sample", new JavaServer());

            } catch (Exception exception) {
                System.err.println("JavaServer: " + exception.toString());
            }
        }
    }

Prev | Home | Next
Using XML-RPC with C and C++ |  | Using XML-RPC with PHP