8

在System类中找到此方法。只是想知道它-

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

Java Doc 描述是:

返回从创建此 Java 虚拟机的实体继承的通道。该方法返回调用系统范围默认 SelectorProvider 对象的inheritedChannel 方法获得的通道。

4

2 回答 2

11

inetd它专为在 Unixy 系统上或xinetd在 Unixy 系统上按需启动 Java 程序而设计。不幸的是,Oracle 在他们的Designing Services to be Launched frominetd article 中有更多文档和示例代码,不幸的是与 RMI 相关,并且在 Jetty 源代码中有一个非常简单的示例,InheritedChannelConnector并且在 bug JETTY-496中有一些有趣的讨论,其中引入了 Jetty 功能.

于 2013-01-06T08:11:59.533 回答
4

SelectorProvider.inheritedChannel()

返回从创建此 Java 虚拟机的实体继承的通道。

在许多操作系统上,进程(例如 Java 虚拟机)可以以允许进程从创建进程的实体继承通道的方式启动。这样做的方式取决于系统,通道可能连接到的可能实体也是如此。例如,在 UNIX 系统上,Internet 服务守护程序 ( inetd ) 用于在请求到达关联的网络端口时启动程序以服务请求。在此示例中,启动的进程继承了表示网络套接字的通道。

如果继承的通道表示网络套接字,则此方法返回的 java.nio.channels.Channel 类型确定如下:

  • 如果继承的通道表示面向流的连接套接字,则返回 java.nio.channels.SocketChannel。至少最初,套接字通道处于阻塞模式,绑定到套接字地址并连接到对等点。

  • 如果继承的通道表示面向流的侦听套接字,则返回 java.nio.channels.ServerSocketChannel。服务器套接字通道至少在最初处于阻塞模式,并绑定到套接字地址。

  • 如果继承的通道是面向数据报的套接字,则返回 java.nio.channels.DatagramChannel。至少最初,数据报通道处于阻塞模式,并绑定到套接字地址。

除了所描述的面向网络的渠道外,这种方法将来可能会返回其他类型的渠道。

此方法的第一次调用会创建返回的通道。此方法的后续调用返回相同的通道。

于 2013-01-06T08:03:01.140 回答