2010-12-29 17 views
0

ファイルを読み取り、タイムアウトのあるストリームを読み取るためのJDK 5以前のAPIはありますか?また、このAPIは、MDB内でラップされるときに安全でなければなりません。 FYI:私はすでにFutureResult、TimedCallableクラスなどを使って調べました。私は結論として、MDB内でのこれらの使用は推奨されていません.1これらはJDKネイティブクラスではなく、2. MDB内でスレッドが生成されます。私は別の解決策が必要です。JDK 5 MDBのファイル/ストリーム読み取りタイムアウトAPI

また、読んでいるスレッドと読んでいるスレッドの適時性を管理し、必要に応じてブロックするスレッドが必要であるため、どのようなソリューションでもスレッド化が必要になると思います。したがって、このような行動はMDB内で違法となるのでしょうか?このAPIがJDKにネイティブであれば、実装するのが安全でしょうか?

答えて

1

InputStream APIからわかるように、これに関する一般的な契約はありません。しかし、いくつかのストリームは、ソケットから取得するInputStreamのようにタイムアウト動作をしますが、これはソケット上で構成する必要があります。

AFAIKあなたは割り込みスレッドを手動で中断しようとすることができます。interrupt()を呼び出すことで、ストリームの基本実装がこれを再スローさせずにキャッチしないようにします(wait()をモニター)。ただし、これは余分なスレッドで、または上記のAPIを使用して行う必要があります。このInterruptedExceptionを捕捉して適切に処理する場合は、かなり安定したソリューションが必要です。

PS:MDBとは何ですか?私は、Microsoft Accessで使用されるMicrosoftデータベース形式の略語のみを知っています。

+0

MDBは非同期通信を処理するEJB(Enterprise Java Bean)の一種であるMessage Driven Beanです。非同期メッセージによってトリガーされるビジネスロジックのラッパーとして使用されます。しかし、MDBとJ2EEコンテナでは、スレッドがEJBのライフサイクルを妨げる可能性があるため、スレッドを生成することは不正です。私は内部的にスレッドを処理するJDKネイティブAPIを探していました。 – TheWolf

+0

私に言い聞かせてください...私は尋ねられていないヒーローのために投票しません:))! – Daniel

関連する問題