Play framework で XStream を利用すると ClassCastException が発生する件
Java でオブジェクトのXML変換を行いたい場合、XStreamという素晴らしいライブラリがあります。
標準のXmlEncoder/XmlDecoderと比較すると、
- 処理が高速
- XMLの可読性が高い
- 簡潔なコードとなる
と良いことだらけです。
しかし、先日 Play framework の開発で利用したいシーンが出てきたので以下のような実装してみたのですが、ClassCastException が発生して上手く動きませんでした。
[java]
final XStream xstream = new XStream(new DomDriver());
return (Hoge) xstrem.fromXML(xml);
[/java]
どうも toXML と fromXML で別の ClassLoader が利用されてしまっているようです。
Play を利用しているとよくハマるパターンですね。
なので、↓な感じで toXML/fromXML 実行時に ClassLoader を明示的に指定すれば解決しました。
[java]
xstream.setClassLoader(Play.classloader);
[/java]