什么在System类中使用inheritedChannel()方法

时间:2013-01-06 07:49:38

标签: java

系统类中找到此方法。只是很想知道它 -

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

Java Doc description is :

  

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

2 个答案:

答案 0 :(得分:10)

它专为在Unixy系统上inetdxinetd按需启动Java程序而设计。在Designing Services to be Launched from inetd文章中,Oracle有更多文档和示例代码,遗憾的是与RMI相关,在InheritedChannelConnector的Jetty源代码中有一个非常简单的示例,在bug JETTY-496中有一些有趣的讨论。引入Jetty功能的地方。

答案 1 :(得分:3)

来自SelectorProvider.inheritedChannel()

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

在许多操作系统上都有一个进程,例如Java虚拟 机器,可以以允许进程的方式启动 从创建进程的实体继承通道。该 完成此操作的方式与系统相关,如同 通道可能连接的可能实体。 例如, 在UNIX系统上,Internet服务守护程序( inetd )用于 当请求到达时,启动程序来服务请求 相关的网络端口。在此示例中,启动的进程, 继承表示网络套接字的通道。

如果继承的通道代表网络套接字 然后返回java.nio.channels.Channel类型 通过这种方法确定如下:

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

  •  
  • 如果继承的通道表示面向流的侦听  然后返回一个java.nio.channels.ServerSocketChannel。服务器套接字通道是,at  最初,在阻塞模式下,绑定到套接字地址。  

  •  
  • 如果继承的通道是面向数据报的套接字  然后是java.nio.channels.DatagramChannel  回。数据报通道至少在初始时是阻塞的  模式,并绑定到套接字地址。  

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

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