iアプリはネットワークとJARファイル、スクラッチパッドへのアクセスにJ2ME CLDCで定められたGeneric Connectionフレームワーク(汎用接続フレームワークとも呼ばれます。)を使用します。このうち、ネットワークに関してはDoCoMoProfile特有のcom.nttdocomo.io.HttpConnection
オブジェクトを使用します。(ちなみに、MIDPではjavax.microedition.io.HttpConnection
を使用しますが、これはMIDPに属するものでCLDCに属するものではありません。)
このオブジェクトの実装は各メーカーで結構異なる(詳しくはリファレンスのこのページを参照してください。)のですが、Generic Connectionフレームワークの実装とした点だけに注目すると、SO503i/iSとD503i/iSの実装はどうも正しくないのではないかと思えます。というのも、Generic Connectionフレームワークの定義によれば、javax.microedition.io.Connection
インターフェースの実装では、close
メソッドは複数回クローズすることができ、なおかつjavax.microedition.io.Connector
クラスでオープンされた接続をクローズするためのメソッドであるべきなのです。しかし、この2シリーズの実装ではHttpConnection
オブジェクトのconnect
メソッドに対応するクローズとして実装されており、またconnect
メソッドを呼び出す前にclose
メソッドを呼び出すと例外までthrowするのです。
結局のところ、現存している実装ですので対応を要する事態になってしまいましたが、もう少し仕様を大事にしていただけると開発者としては助かるなぁ、と思う次第です。