8

Systemクラスでこのメソッドが見つかりました。それについて知りたいだけです-

public static Channel inheritedChannel() throws IOException {
     return SelectorProvider.provider().inheritedChannel();
}

JavaDocの説明は次のとおりです。

このJava仮想マシンを作成したエンティティから継承されたチャネルを返します。このメソッドは、システム全体のデフォルトのSelectorProviderオブジェクトのinheritedChannelメソッドを呼び出して取得したチャネルを返します。

4

2 に答える 2

11

これは、JavaプログラムがUnixyシステムからinetdまたはxinetdUnixyシステム上でオンデマンドで開始されるように設計されています。オラクルの記事には、残念ながらRMIに関連するドキュメントとサンプルコードがいくつかあります。Jettyinetdのソースには非常に簡単な例があり、Jetty機能が導入されInheritedChannelConnectorたバグJETTY-496には興味深い議論があります。 。

于 2013-01-06T08:11:59.533 に答える
4

SelectorProvider.inheritedChannel()から:

このJava仮想マシンを作成したエンティティから継承されたチャネルを返します。

多くのオペレーティングシステムでは、Java仮想マシンなどのプロセスを、プロセスを作成したエンティティからプロセスがチャネルを継承できるように開始できます。これが行われる方法は、チャネルが接続される可能性のあるエンティティと同様に、システムに依存します。たとえば、UNIXシステムでは、インターネットサービスデーモン(inetd)を使用して、要求が関連付けられたネットワークポートに到着したときに、要求を処理するプログラムを開始します。この例では、開始されたプロセスは、ネットワークソケットを表すチャネルを継承します。

継承されたチャネルがネットワークソケットを表す場合、このメソッドによって返されるjava.nio.channels.Channelタイプは次のように決定されます。

  • 継承されたチャネルがストリーム指向の接続されたソケットを表す場合、java.nio.channels.SocketChannelが返されます。ソケットチャネルは、少なくとも最初はブロッキングモードで、ソケットアドレスにバインドされ、ピアに接続されています。

  • 継承されたチャネルがストリーム指向のリスニングソケットを表す場合、java.nio.channels.ServerSocketChannelが返されます。サーバーソケットチャネルは、少なくとも最初はブロッキングモードであり、ソケットアドレスにバインドされています。

  • 継承されたチャネルがデータグラム指向のソケットである場合、java.nio.channels.DatagramChannelが返されます。データグラムチャネルは、少なくとも最初はブロッキングモードであり、ソケットアドレスにバインドされています。

説明されているネットワーク指向のチャネルに加えて、このメソッドは将来、他の種類のチャネルを返す可能性があります。

このメソッドの最初の呼び出しは、返されるチャネルを作成します。その後のこのメソッドの呼び出しは、同じチャネルを返します。

于 2013-01-06T08:03:01.140 に答える