セレクタ・プロバイダは、ゼロ引数コンストラクタを持ち、次の抽象メソッドを実装する、このクラスの具象サブクラスです。 指定されたJava仮想マシン呼出しは、provider
メソッドによって返される、システム全体で単一のデフォルト・プロバイダ・インスタンスを保持します。 このメソッドの最初の呼出しは、次のデフォルト・プロバイダを検出します。
システム全体のデフォルト・プロバイダは、DatagramChannel
、Pipe
、Selector
、ServerSocketChannel
およびSocketChannel
クラスの静的open
メソッドによって使用されます。 これは、System.inheritedChannel()
メソッドでも使用されます。 プログラムは、そのプロバイダをインスタンス化し、このクラスで定義されているopen
メソッドを直接起動することで、デフォルト・プロバイダ以外のプロバイダを使用できます。
このクラス内のすべてのメソッドは、複数の並行スレッドで安全に使用できます。
- 導入されたバージョン:
- 1.4
-
コンストラクタのサマリー
-
メソッドのサマリー
修飾子と型メソッド説明Java仮想マシンを作成したエンティティから継承されたチャネルを返します。abstract DatagramChannel
データグラム・チャネルをオープンします。abstract DatagramChannel
openDatagramChannel
(ProtocolFamily family) データグラム・チャネルをオープンします。abstract Pipe
openPipe()
パイプをオープンします。abstract AbstractSelector
セレクタをオープンします。abstract ServerSocketChannel
サーバー・ソケット・チャネルをオープンします。サーバー・ソケット・チャネルをオープンします。abstract SocketChannel
ソケット・チャネルをオープンします。openSocketChannel
(ProtocolFamily family) ソケット・チャネルをオープンします。static SelectorProvider
provider()
このJava仮想マシン呼出しのためのシステム全体のデフォルト・セレクタ・プロバイダを返します。
-
コンストラクタの詳細
-
SelectorProvider
protected SelectorProvider()このクラスの新しいインスタンスを初期化します。- 例外:
SecurityException
- セキュリティ・マネージャがインストールされており、RuntimePermission
("selectorProvider")
が拒否されている場合
-
-
メソッドの詳細
-
provider
public static SelectorProvider provider()このJava仮想マシン呼出しのためのシステム全体のデフォルト・セレクタ・プロバイダを返します。このメソッドを最初に呼び出したとき、次の手順でデフォルト・プロバイダ・オブジェクトが検出されます。
システム・プロパティ
java.nio.channels.spi.SelectorProvider
が定義されている場合、具象プロバイダ・クラスの完全修飾名になります。 その後、クラスがロードされ、インスタンスが作成されます。システム・クラス・ローダーに表示されるjarファイルにプロバイダ・クラスがインストールされており、そのjarファイルにリソース・ディレクトリ
META-INF/services
にjava.nio.channels.spi.SelectorProvider
というプロバイダ構成ファイルが含まれている場合、そのファイルに指定された最初のクラス名が取得されます。 その後、クラスがロードされ、インスタンスが作成されます。最後に、上記の手段で指定されたプロバイダが存在しない場合は、システムのデフォルト・プロバイダ・クラスのインスタンスが作成され、結果が返されます。
次回以降の呼出しでも、1回目の呼出し時に返されたプロバイダが返されます。
- 戻り値:
- システム全体のデフォルト・セレクタ・プロバイダ
-
openDatagramChannel
public abstract DatagramChannel openDatagramChannel() throws IOExceptionデータグラム・チャネルをオープンします。- 戻り値:
- 新しいチャネル
- 例外:
IOException
- 入出力エラーが発生した場合
-
openDatagramChannel
public abstract DatagramChannel openDatagramChannel(ProtocolFamily family) throws IOException データグラム・チャネルをオープンします。- パラメータ:
family
- プロトコル・ファミリ- 戻り値:
- 新しいデータグラム・チャネル
- 例外:
UnsupportedOperationException
- 指定されたプロトコル・ファミリがサポートされていない場合IOException
- 入出力エラーが発生した場合- 導入されたバージョン:
- 1.7
-
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 IOExceptionJava仮想マシンを作成したエンティティから継承されたチャネルを返します。Java仮想マシンなど、多くのオペレーティング・システムのプロセスを起動する際に、そのプロセスを作成したエンティティからチャネルを継承させることができます。 ただし、その方法はシステムに依存します。チャネルの接続先として使用可能なエンティティについても同様です。 たとえば、UNIXシステムの場合、ある関連ネットワーク・ポート上で要求が受信されると、インターネット・サービス・デーモン(inetd)経由でその要求を処理するプログラムが起動されます。 この例の場合、起動されたプロセスは、ネットワーク・ソケットを表すチャネルを継承します。
継承されたチャネルが「インターネット・プロトコル」ソケット用の場合、このメソッドによって返される
Channel
型は次のように決定されます:継承されたチャネルがストリーム指向の接続ソケット用の場合は、
SocketChannel
が返されます。 ソケット・チャネルは、少なくとも最初はブロック・モードであり、特定のソケット・アドレスにバインドされており、特定のピアに接続されています。継承されたチャネルがストリーム指向のリスニング・ソケット用の場合は、
ServerSocketChannel
が返されます。 サーバー・ソケット・チャネルは、少なくとも最初はブロック・モードであり、特定のソケット・アドレスにバインドされています。継承されたチャネルがデータグラム指向のソケットを表現している場合、
DatagramChannel
が返されます。 データグラム・チャネルは、少なくとも最初はブロック・モードであり、特定のソケット・アドレスにバインドされています。
継承されたチャネルが「Unixドメイン」ソケット用である場合、返される
Channel
タイプは、データグラム指向ソケットがサポートされていないことを除き、前述の「インターネット・プロトコル」ソケットの場合と同じです。前述の2タイプのソケットに加えて、このメソッドは将来的にほかの型を返す可能性があります。
このメソッドの初回呼出し時には、チャネルが作成され、それが返されます。 このメソッドの後続呼出し時には、その同じチャネルが返されます。
- 実装要件:
- このメソッドのデフォルト実装は
null
を返します。 - 戻り値:
- 継承されたチャネル(存在する場合)、それ以外の場合は
null
。 - 例外:
IOException
- 入出力エラーが発生した場合SecurityException
- セキュリティ・マネージャがインストールされており、RuntimePermission
("inheritedChannel")
が拒否されている場合- 導入されたバージョン:
- 1.5
-
openSocketChannel
public SocketChannel openSocketChannel(ProtocolFamily family) throws IOException ソケット・チャネルをオープンします。- 実装要件:
- このメソッドのデフォルト実装では、最初に指定されたプロトコル
family
がnull
でないことを確認してから、UnsupportedOperationException
をスローします。 - パラメータ:
family
- プロトコル・ファミリ- 戻り値:
- 新しいチャネル
- 例外:
UnsupportedOperationException
- 指定されたプロトコル・ファミリがサポートされていない場合IOException
- 入出力エラーが発生した場合- 導入されたバージョン:
- 15
-
openServerSocketChannel
public ServerSocketChannel openServerSocketChannel(ProtocolFamily family) throws IOException サーバー・ソケット・チャネルをオープンします。- 実装要件:
- このメソッドのデフォルト実装では、最初に指定されたプロトコル
family
がnull
でないことを確認してから、UnsupportedOperationException
をスローします。 - パラメータ:
family
- プロトコル・ファミリ- 戻り値:
- 新しいチャネル
- 例外:
UnsupportedOperationException
- 指定されたプロトコル・ファミリがサポートされていない場合IOException
- 入出力エラーが発生した場合- 導入されたバージョン:
- 15
-