|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.jboss.netty.bootstrap.Bootstrap
org.jboss.netty.bootstrap.ServerBootstrap
public class ServerBootstrap

A helper class which creates a new server-side Channel and accepts
incoming connections.
ConnectionlessBootstrap instead for
connectionless transports. Do not use this helper if you are using a
connectionless transport such as UDP/IP which does not accept an incoming
connection but receives messages by itself without creating a child channel.
ChannelFactory via
bind() and bind(SocketAddress).
Once successfully bound, the parent channel starts to accept incoming connections, and the accepted connections become the children of the parent channel.
Options are used to configure both a
parent channel and its child channels. To configure the child channels,
prepend "child." prefix to the actual option names of a child
channel:
For the detailed list of available options, please refer toServerBootstrapb = ...; // Options for a parent channel b.setOption("localAddress", newInetSocketAddress(8080)); b.setOption("reuseAddress", true); // Options for its children b.setOption("child.tcpNoDelay", true); b.setOption("child.receiveBufferSize", 1048576);
ChannelConfig and its sub-types.
parentHandler property is
provided.
ChannelPipeline and you can configure it
in two ways.
The recommended approach is to specify a ChannelPipelineFactory by
calling Bootstrap.setPipelineFactory(ChannelPipelineFactory).
ServerBootstrapb = ...; b.setPipelineFactory(new MyPipelineFactory()); public class MyPipelineFactory implementsChannelPipelineFactory{ publicChannelPipelinegetPipeline() throws Exception { // Create and configure a new pipeline for a new channel.ChannelPipelinep =Channels.pipeline(); p.addLast("encoder", new EncodingHandler()); p.addLast("decoder", new DecodingHandler()); p.addLast("logic", new LogicHandler()); return p; } }
The alternative approach, which works only in a certain situation, is to use the default pipeline and let the bootstrap to shallow-copy the default pipeline for each new channel:
Please note 'shallow-copy' here means that the addedServerBootstrapb = ...;ChannelPipelinep = b.getPipeline(); // Add handlers to the default pipeline. p.addLast("encoder", new EncodingHandler()); p.addLast("decoder", new DecodingHandler()); p.addLast("logic", new LogicHandler());
ChannelHandlers
are not cloned but only their references are added to the new pipeline.
Therefore, you cannot use this approach if you are going to open more than
one Channels or run a server that accepts incoming connections to
create its child channels.
ChannelsServerBootstrap is just a helper class. It neither allocates nor
manages any resources. What manages the resources is the
ChannelFactory implementation you specified in the constructor of
ServerBootstrap. Therefore, it is OK to create as many
ServerBootstrap instances as you want with the same
ChannelFactory to apply different settings for different
Channels.
| Constructor Summary | |
|---|---|
ServerBootstrap()
Creates a new instance with no ChannelFactory set. |
|
ServerBootstrap(ChannelFactory channelFactory)
Creates a new instance with the specified initial ChannelFactory. |
|
| Method Summary | |
|---|---|
Channel |
bind()
Creates a new channel which is bound to the local address which was specified in the current "localAddress" option. |
Channel |
bind(SocketAddress localAddress)
Creates a new channel which is bound to the specified local address. |
ChannelHandler |
getParentHandler()
Returns an optional ChannelHandler which intercepts an event
of a newly bound server-side channel which accepts incoming connections. |
void |
setFactory(ChannelFactory factory)
Sets the ChannelFactory that will be used to perform an I/O
operation. |
void |
setParentHandler(ChannelHandler parentHandler)
Sets an optional ChannelHandler which intercepts an event of
a newly bound server-side channel which accepts incoming connections. |
| Methods inherited from class org.jboss.netty.bootstrap.Bootstrap |
|---|
getFactory, getOption, getOptions, getPipeline, getPipelineAsMap, getPipelineFactory, releaseExternalResources, setOption, setOptions, setPipeline, setPipelineAsMap, setPipelineFactory |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public ServerBootstrap()
ChannelFactory set.
setFactory(ChannelFactory) must be called before any I/O
operation is requested.
public ServerBootstrap(ChannelFactory channelFactory)
ChannelFactory.
| Method Detail |
|---|
public void setFactory(ChannelFactory factory)
ChannelFactory that will be used to perform an I/O
operation. This method can be called only once and can't be called at
all if the factory was specified in the constructor.
setFactory in class BootstrapIllegalArgumentException - if the specified factory is not a
ServerChannelFactorypublic ChannelHandler getParentHandler()
ChannelHandler which intercepts an event
of a newly bound server-side channel which accepts incoming connections.
null if no parent channel handler is set.public void setParentHandler(ChannelHandler parentHandler)
ChannelHandler which intercepts an event of
a newly bound server-side channel which accepts incoming connections.
parentHandler - the parent channel handler.
null to unset the current parent channel handler.public Channel bind()
"localAddress" option. This method is
similar to the following code:
ServerBootstrap b = ...;
b.bind(b.getOption("localAddress"));
IllegalStateException - if "localAddress" option was not set
ClassCastException - if "localAddress" option's value is
neither a SocketAddress nor null
ChannelException - if failed to create a new channel and
bind it to the local addresspublic Channel bind(SocketAddress localAddress)
ChannelException - if failed to create a new channel and
bind it to the local address
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||