JavaTM 2 Platform
Standard Ed. 5.0

java.nio.channels.spi
クラス SelectorProvider

java.lang.Object
  上位を拡張 java.nio.channels.spi.SelectorProvider

public abstract class SelectorProvider
extends Object

セレクタおよび選択可能チャネルのサービスプロバイダクラスです。

セレクタプロバイダは、ゼロ引数コンストラクタを持ち、以下の抽象メソッドを実装する、このクラスの具象サブクラスです。指定された Java 仮想マシン呼び出しは、provider メソッドによって返される、システム全体で単一のデフォルトプロバイダインスタンスを保持します。このメソッドの最初の呼び出しは、以下のデフォルトプロバイダを検出します。

システム全体のデフォルトプロバイダは、DatagramChannelPipeSelectorServerSocketChannel、および SocketChannel の各クラスの静的な open メソッドによって使用されるほか、System.inheritedChannel() メソッドによっても使用されます。プログラム内でデフォルト以外のプロバイダを使用する場合は、そのプロバイダをインスタンス化したあと、このクラスに定義されている open メソッドを直接呼び出します。

このクラス内のすべてのメソッドは、複数の並行スレッドで安全に使用できます。

導入されたバージョン:
1.4

コンストラクタの概要
protected SelectorProvider()
          このクラスの新しいインスタンスを初期化します。
 
メソッドの概要
 Channel inheritedChannel()
          Java 仮想マシンを作成したエンティティから継承されたチャネルを返します。
abstract  DatagramChannel openDatagramChannel()
          データグラムチャネルをオープンします。
abstract  Pipe openPipe()
          パイプをオープンします。
abstract  AbstractSelector openSelector()
          セレクタをオープンします。
abstract  ServerSocketChannel openServerSocketChannel()
          サーバソケットチャネルをオープンします。
abstract  SocketChannel openSocketChannel()
          ソケットチャネルをオープンします。
static SelectorProvider provider()
          この Java 仮想マシン呼び出しのためのシステム全体のデフォルトセレクタプロバイダを返します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

SelectorProvider

protected SelectorProvider()
このクラスの新しいインスタンスを初期化します。

例外:
SecurityException - セキュリティマネージャがインストールされており、そのマネージャが RuntimePermission("selectorProvider") を拒否する場合
メソッドの詳細

provider

public static SelectorProvider provider()
この Java 仮想マシン呼び出しのためのシステム全体のデフォルトセレクタプロバイダを返します。

このメソッドを最初に呼び出したとき、次の手順でデフォルトプロバイダオブジェクトが検出されます。

  1. システムプロパティ java.nio.channels.spi.SelectorProvider が定義されている場合、これが具象プロバイダクラスの完全指定名と見なされます。クラスがロードされ、そのインスタンスが作成されます。この処理に失敗した場合は、詳細不明エラーがスローされます。

  2. システムクラスローダの認識する jar ファイルにプロバイダクラスがインストールされていて、この jar ファイルにリソースディレクトリ META-INF/services 内のプロバイダ構成ファイル java.nio.channels.spi.SelectorProvider が含まれている場合、ファイルに指定されている最初のクラス名が使用されます。クラスがロードされ、インスタンスが作成されます。この処理に失敗した場合、詳細不明エラーがスローされます。

  3. 最後に、上記の手段で指定されたプロバイダが存在しない場合は、システムのデフォルトプロバイダクラスのインスタンスが作成され、結果が返されます。

次回以降の呼び出しでも、1 回目の呼び出し時に返されたプロバイダが返されます。

戻り値:
システム全体のデフォルトセレクタプロバイダ

openDatagramChannel

public abstract DatagramChannel openDatagramChannel()
                                             throws IOException
データグラムチャネルをオープンします。

戻り値:
新しいチャネル
例外:
IOException

openPipe

public abstract Pipe openPipe()
                       throws IOException
パイプをオープンします。

戻り値:
新しいパイプ
例外:
IOException

openSelector

public abstract AbstractSelector openSelector()
                                       throws IOException
セレクタをオープンします。

戻り値:
新しいセレクタ
例外:
IOException

openServerSocketChannel

public abstract ServerSocketChannel openServerSocketChannel()
                                                     throws IOException
サーバソケットチャネルをオープンします。

戻り値:
新しいチャネル
例外:
IOException

openSocketChannel

public abstract SocketChannel openSocketChannel()
                                         throws IOException
ソケットチャネルをオープンします。

戻り値:
新しいチャネル
例外:
IOException

inheritedChannel

public Channel inheritedChannel()
                         throws IOException
Java 仮想マシンを作成したエンティティから継承されたチャネルを返します。

Java 仮想マシンなど、多くのオペレーティングシステムのプロセスを起動する際に、そのプロセスを作成したエンティティからチャネルを継承させることができます。ただし、その方法はシステムに依存します。チャネルの接続先として使用可能なエンティティについても同様です。たとえば、UNIX システムの場合、特定の関連ネットワークポート上で要求が受信されると、インターネットサービスデーモン (inetd) 経由でその要求を処理するプログラムが起動されます。この例の場合、起動されたプロセスは、ネットワークソケットを表すチャネルを継承します。

継承されたチャネルがネットワークソケットを表現している場合、このメソッドから返される Channel の型は、次の手順で決定されます。

このメソッドは、ここで説明したネットワーク指向のチャネルに加え、将来的にほかの種類のチャネルも返すようになる予定です。

このメソッドの初回呼び出し時には、チャネルが作成され、それが返されます。このメソッドの後続呼び出し時には、その同じチャネルが返されます。

戻り値:
継承されたチャネル (存在する場合)、そうでない場合は null
例外:
IOException - 入出力エラーが発生した場合
SecurityException - セキュリティマネージャがインストールされており、そのマネージャが RuntimePermission("inheritedChannel") を拒否した場合
導入されたバージョン:
1.5

JavaTM 2 Platform
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。