Redstone XML-RPC Library への不満
どうやら Java の XML-RPC ライブラリとは、あまり縁がないらしい。またもや、XML-RPC ライブラリへの愚痴エントリである。
Apache XML-RPC ライブラリの複雑さとドキュメントのすくなさ(いつまでホームページのロゴ画像がリンク切れなのだろう?)に辟易して、今度は Redstone というライブラリを試してみた。
Redstone の前身である Marquee というライブラリは developerWorks に紹介記事だって載っている由緒正しい(?)XML-RPC ライブラリだ。
最初は何も問題ないかのように思えた。すべてが順調で平和だった。API はシンプルで、ホームページの簡潔なチュートリアルも必要十分に思えた。
だが、決して小さくはない欠陥がいくつもあることがわかってきた(バージョンは 1.0.1
)。
contentType
の指定が無視される。- エラー処理がいいかげん
- の
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 なんて使ってないのかな…。