XM-RPCHello World
XML-RPCはSOAPよりも早く、簡単な軽量Webサービス技術であり、XML Webサービスの祖である.これはリモートプロセスの呼び出し(remote procedule call,RPC)のための簡単な仕様であり、この呼び出しはHTTPを転送プロトコルとして使用し、XML語彙表をメッセージの有効負荷として使用する.XML-RPCは非常に簡単なので(全体の仕様が印刷されてもまだ10ページ未満).XM-RPCデータタイプ XM-RPCラベル 記述 文字のシーケンス 符号付きまたは符号なし32-bit整数値 true(1)またはfalse(0) 符号付きダブル精度浮動小数点 日付と時間(タイムゾーンがない場合)<base 64> base 64符号化文字列 データタイプのシーケンスのコンテナ 一つのキーワード-値ペアのコンテナXM-RPCのハローワールド:
プロセッサクラス:
下の処理:
sayHello()メソッドの要求は実際にHTTP呼出しに変換され、サービス側でXMLファイルを解析した後、該当する結果をXMLファイルにエンコードします.
プロセッサクラス:
package org.sun.rpc.handler;
public class HelloHandler {
public String sayHello(String name) {
return "Hello, " + name;
}
}
Server端:package org.sun.rpc.server;
import java.io.IOException;
import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.server.PropertyHandlerMapping;
import org.apache.xmlrpc.server.XmlRpcServer;
import org.apache.xmlrpc.server.XmlRpcServerConfigImpl;
import org.apache.xmlrpc.webserver.WebServer;
import org.sun.rpc.handler.HelloHandler;
public class HelloServer {
public static final int PORT = 8080;
public static void main(String... args) throws XmlRpcException, IOException {
System.out.println("Starting RPC Server Now ...");
WebServer webServer = new WebServer(PORT);
XmlRpcServer xmlRpcServer = webServer.getXmlRpcServer();
PropertyHandlerMapping handlerMapping = new PropertyHandlerMapping();
handlerMapping.addHandler("hello", HelloHandler.class);
xmlRpcServer.setHandlerMapping(handlerMapping);
XmlRpcServerConfigImpl serverConfig = (XmlRpcServerConfigImpl) xmlRpcServer.getConfig();
serverConfig.setEnabledForExtensions(true);
serverConfig.setContentLengthOptional(false);
webServer.start();
System.out.println("Registered HelloHandler to \"hello\"");
System.out.println("Now Accepting Requests ...");
}
}
Client端:package org.sun.rpc.client;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
import org.apache.xmlrpc.client.XmlRpcCommonsTransportFactory;
public class HelloClient {
public static void main(String... args) throws MalformedURLException, XmlRpcException {
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
config.setServerURL(new URL("http://127.0.0.1:8080/"));
XmlRpcClient client = new XmlRpcClient();
client.setTransportFactory(new XmlRpcCommonsTransportFactory(client));
client.setConfig(config);
Object[] params = new Object[] { "Jacky" };
String result = (String) client.execute("hello.sayHello", params);
System.out.println("Response from server is: " + result);
}
}
コードはapache-xmlpcライブラリを使用します.下の処理:
sayHello()メソッドの要求は実際にHTTP呼出しに変換され、サービス側でXMLファイルを解析した後、該当する結果をXMLファイルにエンコードします.