Redstone XML-RPC Library への不満
どうやら Java の XML-RPC ライブラリとは、あまり縁がないらしい。またもや、XML-RPC ライブラリへの愚痴エントリである。
Apache XML-RPC ライブラリの複雑さとドキュメントのすくなさ(いつまでホームページのロゴ画像がリンク切れなのだろう?)に辟易して、今度は Redstone というライブラリを試してみた。
Redstone の前身である Marquee というライブラリは developerWorks に紹介記事だって載っている由緒正しい(?)XML-RPC ライブラリだ。
最初は何も問題ないかのように思えた。すべてが順調で平和だった。API はシンプルで、ホームページの簡潔なチュートリアルも必要十分に思えた。
だが、決して小さくはない欠陥がいくつもあることがわかってきた(バージョンは 1.0.1)。
contentTypeの指定が無視される。- エラー処理がいいかげん
<methodResponse>のfaultCodeがハードコーディングされている。- そのエンコーディングも
ISO-8859-1でハードコーディング。日本語書けない。せめてUTF-8にしてよ…
- Base64 のコードがバグっていて、複数行にエンコードされていると対応できない。
- カスタマイズが困難。
- API がシンプルで一見、拡張しやすく見えるが、実際には重要なポイントが
privateだったりしてサブクラス化しづらい。- たとえば、
XmlRpcDispatcherを拡張しても、それを使っているXmlRpcServerに独自のXmlRpcDispatcherを設定する API がない(ので、結局、こいつもサブクラス化して、さらに、サブクラス化したXmlRpcServerを使うXmlRpcServletを書いて …)。XmlRpcParserは XML-RPC の xml を解析できるが、肝心の結果はprivateになっているため、これ単体で使えない。
実は 3. までの問題を修正するためのラッパーライブラリを、テストコード含めて 800 行ほど書いていた。しかし、それも 4. の理由により挫折しかけている。まあ、ad-hoc な修正の塊なので、コード自体はもったいなくないのだが。
誰も XML-RPC なんて使ってないのかな…。