XML-RPC技術


-------------本文參考劉洋,魏飛等編著的《精通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時,存在很大的不足

 

       

  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章