Redstone XML-RPC Library への不満

Redstone XML-RPC Library への不満

2007/01/13 11:26am

どうやら Java の XML-RPC ライブラリとは、あまり縁がないらしい。またもや、XML-RPC ライブラリへの愚痴エントリである

Apache XML-RPC ライブラリの複雑さとドキュメントのすくなさ(いつまでホームページのロゴ画像がリンク切れなのだろう?)に辟易して、今度は Redstone というライブラリを試してみた。

Redstone の前身である Marquee というライブラリは developerWorks に紹介記事だって載っている由緒正しい(?)XML-RPC ライブラリだ。

最初は何も問題ないかのように思えた。すべてが順調で平和だった。API はシンプルで、ホームページの簡潔なチュートリアルも必要十分に思えた。

だが、決して小さくはない欠陥がいくつもあることがわかってきた(バージョンは 1.0.1)。

  1. contentType の指定が無視される
  2. エラー処理がいいかげん
  • faultCode がハードコーディングされている。
  • そのエンコーディングも ISO-8859-1 でハードコーディング。日本語書けない。せめて UTF-8 にしてよ…
  1. Base64 のコードがバグっていて、複数行にエンコードされていると対応できない。
  2. カスタマイズが困難。
  • API がシンプルで一見、拡張しやすく見えるが、実際には重要なポイントが private だったりしてサブクラス化しづらい。
  • たとえば、XmlRpcDispatcher を拡張しても、それを使っている XmlRpcServer に独自の XmlRpcDispatcher を設定する API がない(ので、結局、こいつもサブクラス化して、さらに、サブクラス化した XmlRpcServer を使う XmlRpcServlet を書いて …)。
  • XmlRpcParser は XML-RPC の xml を解析できるが、肝心の結果は private になっているため、これ単体で使えない。

実は 3. までの問題を修正するためのラッパーライブラリを、テストコード含めて 800 行ほど書いていた。しかし、それも 4. の理由により挫折しかけている。まあ、ad-hoc な修正の塊なので、コード自体はもったいなくないのだが。

誰も XML-RPC なんて使ってないのかな…。