Methods Summary |
---|
public java.nio.channels.Channel | inheritedChannel()Returns the channel inherited from the entity that created this
Java virtual machine.
On many operating systems a process, such as a Java virtual
machine, can be started in a manner that allows the process to
inherit a channel from the entity that created the process. The
manner in which this is done is system dependent, as are the
possible entities to which the channel may be connected. For example,
on UNIX systems, the Internet services daemon (inetd) is used to
start programs to service requests when a request arrives on an
associated network port. In this example, the process that is started,
inherits a channel representing a network socket.
In cases where the inherited channel represents a network socket
then the {@link java.nio.channels.Channel Channel} type returned
by this method is determined as follows:
If the inherited channel represents a stream-oriented connected
socket then a {@link java.nio.channels.SocketChannel SocketChannel} is
returned. The socket channel is, at least initially, in blocking
mode, bound to a socket address, and connected to a peer.
If the inherited channel represents a stream-oriented listening
socket then a {@link java.nio.channels.ServerSocketChannel
ServerSocketChannel} is returned. The server-socket channel is, at
least initially, in blocking mode, and bound to a socket address.
If the inherited channel is a datagram-oriented socket
then a {@link java.nio.channels.DatagramChannel DatagramChannel} is
returned. The datagram channel is, at least initially, in blocking
mode, and bound to a socket address.
In addition to the network-oriented channels described, this method
may return other kinds of channels in the future.
The first invocation of this method creates the channel that is
returned. Subsequent invocations of this method return the same
channel.
return null;
|
private static boolean | loadProviderAsService()
Iterator i = Service.providers(SelectorProvider.class,
ClassLoader.getSystemClassLoader());
for (;;) {
try {
if (!i.hasNext())
return false;
provider = (SelectorProvider)i.next();
return true;
} catch (ServiceConfigurationError sce) {
if (sce.getCause() instanceof SecurityException) {
// Ignore the security exception, try the next provider
continue;
}
throw sce;
}
}
|
private static boolean | loadProviderFromProperty()
String cn = System.getProperty("java.nio.channels.spi.SelectorProvider");
if (cn == null)
return false;
try {
Class c = Class.forName(cn, true,
ClassLoader.getSystemClassLoader());
provider = (SelectorProvider)c.newInstance();
return true;
} catch (ClassNotFoundException x) {
throw new ServiceConfigurationError(x);
} catch (IllegalAccessException x) {
throw new ServiceConfigurationError(x);
} catch (InstantiationException x) {
throw new ServiceConfigurationError(x);
} catch (SecurityException x) {
throw new ServiceConfigurationError(x);
}
|
public abstract java.nio.channels.DatagramChannel | openDatagramChannel()Opens a datagram channel.
|
public abstract java.nio.channels.Pipe | openPipe()Opens a pipe.
|
public abstract java.nio.channels.spi.AbstractSelector | openSelector()Opens a selector.
|
public abstract java.nio.channels.ServerSocketChannel | openServerSocketChannel()Opens a server-socket channel.
|
public abstract java.nio.channels.SocketChannel | openSocketChannel()Opens a socket channel.
|
public static java.nio.channels.spi.SelectorProvider | provider()Returns the system-wide default selector provider for this invocation of
the Java virtual machine.
The first invocation of this method locates the default provider
object as follows:
If the system property
java.nio.channels.spi.SelectorProvider is defined then it is
taken to be the fully-qualified name of a concrete provider class.
The class is loaded and instantiated; if this process fails then an
unspecified error is thrown.
If a provider class has been installed in a jar file that is
visible to the system class loader, and that jar file contains a
provider-configuration file named
java.nio.channels.spi.SelectorProvider in the resource
directory META-INF/services, then the first class name
specified in that file is taken. The class is loaded and
instantiated; if this process fails then an unspecified error is
thrown.
Finally, if no provider has been specified by any of the above
means then the system-default provider class is instantiated and the
result is returned.
Subsequent invocations of this method return the provider that was
returned by the first invocation.
synchronized (lock) {
if (provider != null)
return provider;
return (SelectorProvider)AccessController
.doPrivileged(new PrivilegedAction() {
public Object run() {
if (loadProviderFromProperty())
return provider;
if (loadProviderAsService())
return provider;
provider = sun.nio.ch.DefaultSelectorProvider.create();
return provider;
}
});
}
|