2008年6月2日月曜日

S2XML-RPCを使って、更新pingを送信してみました。(更新ping受信サーバ作成 その2)

受信のテストに使用してみただけですが、一応紹介。
JUnitを使用しています。
が、特にテストになっているわけではなく、単に更新Pingサーバに接続してみるだけです。実行するのが簡単なのでこうしてます。


まず、クライアント用のdicon設定です。
client.dicon


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components>
<include path="s2xmlrpc.dicon"/>
<component name="remoting"
class="org.seasar.remoting.common.interceptor.RemotingInterceptor">
<property name="connector">connector</property>
</component>
<component name="connector"
class="org.seasar.remoting.xmlrpc.connector.XmlRpcConnector">
<property name="baseURL">baseURL</property>
</component>
<component name="baseURL" class="java.net.URL" autoBinding="none">
<arg>"http://localhost:8080/xmlrpc/ping"</arg>
</component>
<component name="weblogUpdates" class="net.ukauka.xmlrpc.service.WeblogUpdatesService">
<aspect>remoting</aspect>
</component>
</components>


設定自体はS2XML-RPCのチュートリアルのままですので、変更するのはbaseURLの設定ぐらいです。ここに接続先のURLを設定します。
後、接続するメソッドに対応するインタフェースをcomponentとして記述しておきます。
aspectにremotingと設定します。
次に実際に接続を行うクラスの作成です。
S2TestCaseを使用していますのでこのクラスをJUnitで実行で試すことが出来ます。
WeblogUpdatesServiceTest.java


package net.ukauka.test.xmlrpc;
import java.util.Map;
import net.ukauka.xmlrpc.service.WeblogUpdatesService;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.seasar.extension.unit.S2TestCase;
public class WeblogUpdatesServiceTest extends S2TestCase {
protected Log log = LogFactory.getLog(this.getClass());
public WeblogUpdatesServiceTest(String name) {
super(name);
}
public void setUp() {
include("client.dicon");
}
public void testPing() {
log.debug("start");
WeblogUpdatesService service =
(WeblogUpdatesService) getComponent("weblogUpdates");
String name = "うかうかダイエット";
String url = "http://diet.ukauka.net/";
Map result = service.ping(name, url);
log.debug(result);
}
}


特に難しい点はありません
WeblogUpdatesService service =
(WeblogUpdatesService) getComponent("weblogUpdates");
で接続するメソッドに対応したサービスを取得し、
Map result = service.ping(name, url);
メソッドを実行するだけです。
これだけで更新pingを送信することが出来ます。
返り値はMapになっています。messageとflerrorが設定されています。
messageは適当なメッセージが入っています。flerrorは正常終了でfalse、エラーの場合にtrueが入っています。
私が作成した更新pingサーバのmessageは「ok」なんてそっけない感じにしていますが、googleの更新pingサーバなんかですと「Thanks for the ping.」なんて返してきます。
あと、HTMLを取得してrssのURLを取得して、rssから最新の記事情報を取ってきて、データベースに登録する。
というところまでは作ってみたんですが、それについては記事をわけます。

0 件のコメント:

コメントを投稿