JSSE を使用して SSL 接続を受け入れ、ストリーム内で単純な XML メッセージ形式を使用する Java サーバーがあります。サーバーに完全なメッセージを読み取ってから返信を送信してもらいたいです。org.xml.sax.XMLReader はストリーム全体を読み取ってから close() を呼び出す必要があるため、これは非常に困難です。奇妙に思えるかもしれませんが、Sun JSSE プロバイダーを使用する Java 6 では、SSLSocket の両端が実際に閉じられるため、メッセージを戻すことができません。クライアント側で Socket の shutdownOutput() メソッドを使用してみましたが、これは JSSE ではサポートされていません。
私の解決策は、カスタム クラスにラップされた InputStream を渡すことでした。このカスタム クラスは、クローズ リクエストを黙って無視し、最初の空白行に遭遇したときにストリームがクローズされたことを示します。これにより、XML が通常の有効範囲を超えて制限されますが、クライアントは必要に応じて入力内の空白行を簡単に除外できます。より良い解決策はありますか?