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のハローワールド:
    プロセッサクラス:
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ファイルにエンコードします.