-------------本文參考劉洋,魏飛等編著的《精通jboss---EJB與webservice開發精解》
XML-RPC技術的實質就是用XML描述你所需要的遠程調用方法,並通過HTTP來傳送這些XML數據
Apache XML-RPC實現工具:可以到以下網址下載:http://download.csdn.net/detail/u013998070/8563005
一:獨立安裝和啓動:
1.將下載的xmlrpc.zip文件解壓到你的工作目錄下,可以找到xmlrpc-2.0.1.jar
2.打開命令行工具,調整到xmlrpc-2.0.1.jar,運行命令行程序,如下圖:
如何命令行內不顯示任何信息,說明你的xml-rpc服務器已經正常啓動了,這種方式是使用了xmlrpc-2.0.1.jar中內建的web服務器來啓動xml-rpc服務器
二:xml-rpc的實現結構
xml-rpc服務器是通過XmlRpcHandler來實現的,服務器中用於服務的java類對象都是由XmlRpcHandler封裝起來,並由XmlRpcHandler負責執行RPC調用的方法
實例:利用xml-rpc調用服務器端對象
a.使用內置的web服務器的方法
package com.liuyang.xmlrpc.server;
import org.apache.xmlrpc.WebServer;
import com.liuyang.xmlrpc.handles.HelloWorldHandler;
import com.liuyang.xmlrpc.handles.IntHandler;
import com.liuyang.xmlrpc.handles.SimpleHandler;
/*
* 8080設置了webserver的監聽端口,同時也初始化了其內部的XmlRpcServer,來啓動Xml-Rpc請求,然後爲webserver添加Handler
*/
public class SimpleServer {
/**
* @param args
*/
public static void main(String[] args) {
WebServer webServer=new WebServer(8080); //啓動內置的web服務器
webServer.addHandler("HelloWorldHandler",new HelloWorldHandler());
webServer.addHandler("$default",new SimpleHandler());
webServer.addHandler("IntHandler",new IntHandler());
System.out.println("webserver start()");
webServer.start();
}
}
第1個Handler:
package com.liuyang.xmlrpc.handles;
public class HelloWorldHandler {
public String sayHello(String message){
return "sayhello to"+message;
}
}
第2個Handler:
package com.liuyang.xmlrpc.handles;
public class IntHandler {
public int count;
public int add(int num){
count+=num;
return count;
}
}
第3個Handler:
package com.liuyang.xmlrpc.handles;
import java.util.Vector;
import org.apache.xmlrpc.XmlRpcHandler;
public class SimpleHandler implements XmlRpcHandler {
@Override
public Object execute(String arg0, Vector arg1) throws Exception {
return "this is simplehandler";
}
}
運行SimpleServer後,看到如下圖:
SimpleClient的代碼如下:
package com.liuyang.xmlrpc.client;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.Vector;
import org.apache.xmlrpc.XmlRpcClient;
import org.apache.xmlrpc.XmlRpcException;
public class SimpleCient {
/**
* @param args
* @throws IOException
* @throws XmlRpcException
*/
public static void main(String[] args) throws XmlRpcException, IOException {
XmlRpcClient xmlRpcClient=new XmlRpcClient("localhost",8080);
Vector vector1=new Vector();
vector1.add("nini");
System.out.println(xmlRpcClient.execute("HelloWorldHandler.sayHello", vector1));
Vector vector2=new Vector();
System.out.println(xmlRpcClient.execute("", vector2));
Vector vector3=new Vector();
vector3.add(new Integer(1));
System.out.println(xmlRpcClient.execute("IntHandler.add", vector3));
}
}
以上簡單介紹了xml-rpc技術利用內置服務器調用服務器對象的方法,xml-rpc自身有一些優勢,但是也存在很大的侷限性,在面向web-service時,存在很大的不足