First, what is XML-RPC
XML-RPC is a set of specifications and a series of implementations that allow procedures for running in different operating systems, different environments. This remote process call uses HTTP as the transport protocol, XML as the encoding format of the transfer information. The definition of XML-RPC is as simple as possible, but it can be transmitted, processed, and returns complex data structures. XML-RPC is a remote procedure call protocol working on the Internet. An XML-RPC message is a requestor XML HTTP-POST request, and the method being called executes and returns the execution result in XML format. REQUEST EXAMPLE Here's An Example of An XML-RPC Request: Post / RPC2 HTTP / 1.0User-agent: Frontier / 5.1.2 (WINNT) HOST: Betty.Userland.comContent-Type: Text / XMLContent-Length: 181
XML Version = "1.0"?>
XML Version = "1.0"?>
Second, XML-RPC Getting Started
The following entry includes a HelloHandler, a server (HelloClient). The first thing to do is to create classes and methods for remote processes calls, and people often call managers. XML-RPC Manager is a method and method set that accepts XML-RPC requests and decodes the request content, and a request is issued to a class and method. // Manager class package XMLRPC;
/ ** * @Author trier * * hellohandler code> b> is a simple handler tourler Than can * bereg * / public class hellohandler {public string self sayhello (String STRING Name) {return "Hello" Name;}} The server program registers the created manager to the server and specifies other specific parameters for the server. // server class package xmlrpc; / ** * *
HelloServer code> b> is a simple xml-rpc server * That Will Take the
HelloHandler code> class available * For xml-prc calls. * * / import org.apache.xmlrpc.Webserver; import org.apache.xmlrpc.xmlrpc; import java.io ioException;
Public class helloserver {public static void main (string [] args) {if (args.length <1) {system.out.println ("USAGE: Java HelloServer [port]); system.exit (-1);} Try {xmlrpc.setdriver ("org.apache.xerces.Parsrs.saxparser"); // Start the server system.out.println ("Starting XML-RPC Server ..."); WebServer Server = New Web Server (Integer.Parseint (Args [0])); // Register Our Handler Class Server.AddHandler ("Hello", New HelloHandler ()); System.out.Println ("Now Accepting Requests ...") Catch (ClassNotFoundException E) {System.out.println ("Could Not Locate Sax Driver);} Catch (IOException E) {System.out.Println (" Could Not Start Server: " E.getMessage ()) ;}}} // customer program package XMLRPC;
/ *** * HelloClient code> b> is a simple xml-rpc client * That makes an XML-RPC Request to
HelloServer code> * / import java.io .IOException; import java.util.Vector; import org.apache.xmlrpc.XmlRpc; import org.apache.xmlrpc.XmlRpcClient; import java.net.MalformedURLException; import org.apache.xmlrpc.XmlRpcException;
Public class helloclient {public static void main (string [] args) {if (args.length <1) {system.out.println ("USAGE: Java HelloClient [Your Name]); system.exit (-1); } try {// Use the Apache Xereces SAX Driver XmlRpc.setDriver ( "org.apache.xerces.parsers.SAXParser"); // Specify the server XmlRpcClient client = new XmlRpcClient ( "http: // localhost: 8585"); // create request vector params = new vector (); params.addelement (args [0]); // make a request and print the result string result = (string) Client.execute ("Hello.sayhello", params; System.out.println ( "Response from server:" result);} catch (ClassNotFoundException e) {System.out.println ( "Could not locate SAX Driver");} catch (MalformedURLException e) {System.out.println ("INCORRECT URL FRO XML-RPC Server Forumt: E.GetMessage ());} Catch (xmlrpcexception e) {system.out.println ("xmlrpcexce:" E.GetMessage ());} catch (ioException e) {system.out.println ("IOEXCEPTION:" E.getMessage ());}}}
Third, the simple comparison of RPC and RMI
The most important difference between RMI and RPC is how the method is not called. In RMI, the remote interface makes each remote method signature. If a method is executed on the server, but no matching signature is added to this remote interface, then this new method cannot be called by the RMI client. In the RPC, when a request arrives at the RPC server, this request contains a parameter set and a text value, usually forms the form of "classname.methodname". This indicates that the RPC server indicates that the method is called "MethodName" in the class of "classname". The RPC server then searches for classes and methods that match it, and use it as input to the method parameter type. The parameter type here is matched to the type in the RPC request. Once the match is successful, this method is called, and the result is encoded and returns to the client. Trier finishing: Reference: http://www.xmlrpc.com/ "Java & XML" O'Reilly