ゴミ箱.net

汚物は消毒

JavaMailが文字化けする件2

以前の続き。
JavaMailの原因不明の文字化けに苦しんで、ようやく原因を突き止めて解決したと思ったら再発しやがた。
いったいおれ どうな て

真の原因は、どうやら同じアプリの中で、ウェブサービスのクライアントとJavaMailを同時に使っていたのがまずかったらしい。
[#JAX_WS-643] JAX-WS RI breaks JavaMail's DataContentHandlers in the container - Java.net JIRA

このいやらしいバグが発生したアプリは、外部のウェブサービスを呼び出して一部の処理をそいつに任せるようになっている。
ウェブサービスを呼び出すため、WSDLファイルをもとにwsimportでクライアントのソースコードを生成し、生成したクライアントをアプリケーションから呼び出すようにしていたのだが、こいつが食わせ物だった。
Javaランタイムに含まれるJAX-WS RIのバージョンが2.1.6より古いと、JavaMailも参照している静的な変数領域を勝手に書き換えてしまうらしく、そのせいで一度でもウェブサービスのクライアントを呼び出してしまうとそれ以降JavaMailの文字化けが続いてしまう。
そして、使っていたJavaランタイムのJAX-WS RIのバージョンがちょうど2.1.6だったせいで謎の文字化けに悩まされたわけだ。
1バイト文化圏の野蛮人どもめ。何も考えずに糞実装作りやがって。

対策としてはJAX-WS RIを2.1.7以上にアップグレードすること。簡易インストーラがついてるから導入が楽なのが救いだ。

スポンサーサイト

PageTop