nDiki : RPC::XML
スポンサード リンク
Related term
2004年8月29日 (日)
■ XML-RPC - Java クライアントと Perl サーバ

Java プログラムと Perl プログラムとの連携に XML-RPCが使えないか検討。 まずは実験。
@ Perl 側
RPC::XMLモジュールを使う。
#!/usr/bin/perl -w
use strict;
use RPC::XML::Server;
my $server = RPC::XML::Server->new(port => 9876);
$server->add_method( {name => 'Perl.eval',
signature => [ 'struct string' ],
code => sub { warn $_[1]; return {value => eval $_[1]}}});
$server->server_loop;
引数の文字列を eval した結果を文字列で返す危険な手続き。
@ Java 側
いろいろライブラリがあり迷う。 Apache XML-RPCが簡単そうなのでまずはこれで。1.2-b1 を使用。
import java.util.Vector;
import java.util.Hashtable;
import java.io.IOException;
import org.apache.xmlrpc.XmlRpcClient;
import org.apache.xmlrpc.XmlRpcException;
public class XMLRPCClient {
public static void main(String[] args) {
String url = args[0];
String methodName ="Perl.eval";
Vector params = new Vector();
params.add(args[1]);
try {
XmlRpcClient client = new XmlRpcClient(url);
try {
//String result = (String)client.execute(methodName, params);
//System.out.println(result);
Hashtable result = (Hashtable)client.execute(methodName, params);
System.out.println(result.get("value"));
} catch (XmlRpcException ex) {
System.out.println(ex.getMessage());
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
Perl 側でプログラムを起動しておいて実行。
java -classpath .:xmlrpc-1.2-b1.jar \ XMLRPCClient http://localhost:9876/ "3 + 5"
8 が出力される。成功。簡単。
- RPC::XML のかわりに XMLRPC::Lite (2004-08-31)
- 私的10大ニュース2004 [ comp ] (2004-12-31)
- ハッシュとは (2004-06-09)
- SQLite とか DbUnit とか (2005-05-23)
- 過去の今ごろ (2004-08-27)
2004年8月31日 (火)
■ RPC::XML のかわりに XMLRPC::Lite

Windows の ActiveState 5.6.1 では RPC::XML の make test が通らない。 がっかり。 かわりに、SOAP::Liteに入っている XMLRPC::Lite を使ってみる。
#!/usr/bin/perl -w
use strict;
use SOAP::Lite +trace => qw(trace);
use XMLRPC::Transport::HTTP;
my $daemon = XMLRPC::Transport::HTTP::Daemon
->new(LocalPort => 9876)
->dispatch_to('Server');
$daemon->handle;
package Server;
sub evalcode {
warn $_[1];
return +{ value => eval $_[1] };
}
1;
名前の関係から Perl.eval を Server.evalcode に変更した以外は、RPC::XMLの実験の時と一緒。 クライアントは前回の Java プログラム(メソッド名のみ上記のように修正)。
こちらは ActiveState 5.6.1 でも動作。一部ライブラリが warning を出す以外いまのおころ問題無し。Linux 環境でも warning は出る。ライブラリの undefined 扱いの問題のようだ。実害は無さそう。 SOAP::Lite を 0.55 から 0.60a に上げると少し warning が減る(無くならない)。
機能的には RPC::XML の方が使いやすそうだが、SOAP::Lite の方がメジャーという強みがある。ActivePerl 5.6.1 にも標準でバンドルされているし。
- 21:00 Xalan-Java + Bean Scripting Fra... (2001-11-27)
- ActivePerl で Ming (2005-02-23)
- 私的10大ニュース2004 [ comp ] (2004-12-31)
- [ Perl ] PDL::PP で C extension を書く (2004-02-19)
- ActivePerl 5.6.1 Build 638 にバンドルされている... (2004-08-19)
2004年9月14日 (火)
■ XMLRPC::Lite + 自前の HTTP::Daemon サーバ

既に HTTP::Daemon で作成されているHTTPサーバで、XML-RPC インタフェースを提供したい。 前回のチェックで XMLRPC::Lite を使う事にした(RPC::XML は ActivePerl 5.6.1 build638 でテストが通らない)。 このパッケージで用意されているサーバ向けモジュールは、主に単独CGI プログラムで使うモジュールと、自前で HTTP::Daemon をまわすサーバタイプ。
そのままでは使えないので、以下のように。
- XMLRPC::Transport::HTTP::CGI のサブクラスを作成し、handle をオーバライドする。中身は SOAP::Transport::HTTP::Server::handle を呼ぶだけ (SUPER::handle では駄目)。
- XML-RPC リクエストがきたら、上記インスタンスの request メソッドで HTTP::Request オブジェクトを渡す。
- handle を実行。
- response メソッドで HTTP::Response を受け取り、クライアントに送信。
handle メソッドで入出力をさせないようにするのがポイント。
- Perl CGI プログラムのテストには WWW::Mechanize::... (2006-02-18)
- HTTP::Daemonベースのプログラムのテスト (2004-11-26)
- RPC::XML のかわりに XMLRPC::Lite (2004-08-31)
- www.naney.org に「友人・知人に紹介メール」ページを新設 (2000-12-27)
- ハイパー日記システム と Log::Log4perl (2004-06-07)
スポンサード リンク
■よく検索されるキーワード
提案書(75) torrent(69) perl(61) 書き方(45) 充電式カイロ(43) windows(38) x31(36) 使い方(32) linux(32) cvs(25) アジェンダとは(25) usb(25) thinkpad(23) 静電気(21) サンプル(20) 口コミ(20) ヨドバシ(20) アジェンダ(20) 画像(19) debian(19) ubuntu(19) mp980(18) f-01a(18) 手帳(17) tc-1(17) 秋葉原(16) ssh(16) subversion(16) グッズ(16) a6(15) 壁紙(15) ほぼ日手帳(15) c#(14) ダイソー(14) svn(14) 交換(14) インストール(13) 加湿器(13) firefox(12) ノート(12) 無印(12) 日本語(12) wiki(12) ganttproject(12) デロンギ(11) 方眼(11) ヨドバシカメラ(11) デザイン(11) nikkor(11) 設定(11) 作り方(11) dropbox(11) af(10) terastation(10) memcached(10) レビュー(10) カバー(10) カイロ(10) 2009(10) 除去(10) nikon(10) tortoisesvn(10) クラリチン(9) ガントチャート(9) 動画(9) ポメラ(9) ご査収(9) rcs(9) モジュール(9) n-01a(9) フィルム(9) 写真(9) システム手帳(9) edition(9) porter(9) xp(8) imap(8) 4c(8) docomo(8) ミニ6穴(8)■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザインProcess Time: 15.131406s / load averages: 1.65, 0.91, 0.70
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)



スポンサード リンク