标签:style blog http io color ar os 使用 java
XML-RPC的全称是XML Remote Procedure Call,即XML(标准通用标记语言下的一个子集)远程方法调用。它是一套允许运行在不同操作系统、不同环境的程序实现基于Internet过程调用的规范和一系列的实现。这种远程过程调用使用http作为传输协议,XML作为传送信息的编码格式。XML-RPC的定义尽可能的保持了简单,但同时能够传送、处理、返回复杂的数据结构。
基本介绍
XML-RPC是工作在Internet上的远程过程调用协议。一个XML-RPC消息就是一个请求体为xml的http-post请求,被调用的方法在服务器端执行并将执行结果以xml格式编码后返回。
1 <?xmlversion="1.0"?> 2 <methodCall> 3 <methodName>examples.getStateName</methodName> 4 <params> 5 <param> 6 <value> 7 <i4>41</i4> 8 </value> 9 </param> 10 </params> 11 </methodCall>
1 <?xmlversion="1.0"?> 2 <methodResponse> 3 <params> 4 <param> 5 <value> 6 <string> 7 SouthDakota 8 </string> 9 </value> 10 </param> 11 </params> 12 </methodResponse>
1 package xmlRpc; 2 /***@authortrier*********************************************************************************** 3 * <b><code>HelloHandler</code></b> 4 * is a simple handler that can be registered with an XML-RPCserver 5 **************************************************************************************************/ 6 public class HelloHandler 7 { 8 public String SayHello(String name) 9 { 10 return "Hello" + name; 11 } 12 }
服务器程序将创建的管理器注册到服务器上,并为服务器指明应用程序其他特定的参数。
1 package xmlRpc; 2 /************************************************************* 3 * 4 * <b><code>HelloServer</code></b> is a simple XML-RPCserver 5 * that will take the 6 * <code>HelloHandler</code> class available for XML-PRC calls. 7 * 8 *************************************************************/ 9 import org.apache.xmlrpc.WebServer; 10 import org.apache.xmlrpc.XmlRpc; 11 import java.IOException; 12 public class HelloServer 13 { 14 public static void main(String[]args) 15 { 16 if(args.length<1) 17 { 18 System.out.println("Usage:java HelloServer[port]"); 19 System.exit(-1); 20 } 21 try 22 { 23 XmlRpc.setDriver("org.apache.xerces.parsers.SAXParser"); 24 25 //start the server 26 System.out.println("StartingXML-RPCServer......"); 27 WebServer server = newWebServer(Integer.parseInt(args[0])); 28 29 //register our handler class 30 server.addHandler("hello",new HelloHandler()); 31 32 System.out.println("Now accepting requests......"); 33 34 } 35 catch(Class NotFoundExceptione) 36 { 37 System.out.println("Could not locate SAXDriver"); 38 } 39 catch(IOExceptione) 40 { 41 System.out.println("Could not start server:" + e.getMessage()); 42 } 43 } 44 }
1 package xmlRpc; 2 /********************************************************** 3 * 4 * <b><code>HelloClient</code></b>is a simple XML-RPC client 5 * that makes an XML-RPC request to <code>HelloServer</code> 6 * 7 **********************************************************/ 8 import java.i.IOException; 9 import java.util.Vector; 10 import org.apache.xmlrpc.XmlRpc; 11 import org.apache.xmlrpc.XmlRpcClient; 12 import java.t.MalformedURLException; 13 import org.apache.xmlrpc.XmlRpcException; 14 public class HelloClient 15 { 16 public static void main(String[]args) 17 { 18 if(args.length<1) 19 { 20 System.out.println("Usage:java HelloClient[yourname]"); 21 System.exit(-1); 22 } 23 try 24 { 25 //Use the Apache Xereces SAXDriver 26 XmlRpc.setDriver("org.apache.xerces.parsers.SAXParser"); 27 28 //Specify the server 29 XmlRpcClient client = new XmlRpcClient("http://localhost:8585"); 30 31 //create request 32 Vector params = new Vector(); 33 params.addElement(args[0]); 34 35 //make a request and print the result 36 String result = (String)client.execute("hello.sayHello",params); 37 System.out.println("Response from server:" + result); 38 } 39 catch(ClassNotFoundExceptione) 40 { 41 System.out.println("Could not locate SAXDriver"); 42 } 43 catch(MalformedURLExceptione) 44 { 45 System.out.println("Incorrect URL for xml-rpc server foramt:"+e.getMessage()); 46 } 47 catch(XmlRpcExceptione) 48 { 49 System.out.println("XmlRpcException:"+e.getMessage()); 50 } 51 catch(IOExceptione) 52 { 53 System.out.println("IOException:"+e.getMessage()); 54 } 55 } 56 }
RPC和RMI的简单比较:
标签:style blog http io color ar os 使用 java
原文地址:http://www.cnblogs.com/stemon/p/4078424.html