|
|||||||||
上一个类 下一个类 | 框架 无框架 | ||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object org.jboss.netty.bootstrap.Bootstrap org.jboss.netty.bootstrap.ServerBootstrap
public class ServerBootstrap
创建一个服务端Channel
和接受传入连接的帮助类.
ServerBootstrap
代替.如果你正使用一个不接受传入连接且不通过创建子channel接受消息的无连接传输如UDP/IP,千万不要使用该帮助类.
ChannelFactory
对象通过
bind()
和 bind(SocketAddress)
创建的.
一旦绑定成功,该父channel开始接受传入的连接,而且接受了的连接则成为该父channel的子channel.
Options
属性集常常用来配置父channel和它的子channel.
要配置子channel,则在实际的属性名前加上"child."
前缀:
要了解更多有效选项集的详细信息,请参阅ServerBootstrap
b = ...; // 父channel的属性集 b.setOption("localAddress", newInetSocketAddress
(8080)); b.setOption("reuseAddress", true); // 子channel的属性集 b.setOption("child.tcpNoDelay", true); b.setOption("child.receiveBufferSize", 1048576);
ChannelConfig
和相应子类.
parentHandler
属性来解决.
ChannelPipeline
,你可以通过两个方式设置.
一个推荐的方式是通过调用Bootstrap.setPipelineFactory(ChannelPipelineFactory)
方法 .
ServerBootstrap
b = ...; b.setPipelineFactory(new MyPipelineFactory()); public class MyPipelineFactory implementsChannelPipelineFactory
{ publicChannelPipeline
getPipeline() throws Exception { // Create and configure a new pipeline for a new channel.ChannelPipeline
p =Channels
.pipeline(); p.addLast("encoder", new EncodingHandler()); p.addLast("decoder", new DecodingHandler()); p.addLast("logic", new LogicHandler()); return p; } }
另外一个方法只有在特定的情况使用,是使用默认的pipeline并且让bootstrap使用使用浅拷贝为每个新的channel设置:
请注意这里的'浅拷贝'的意思仅仅是把ServerBootstrap
b = ...;ChannelPipeline
p = b.getPipeline(); // Add handlers to the default pipeline. p.addLast("encoder", new EncodingHandler()); p.addLast("decoder", new DecodingHandler()); p.addLast("logic", new LogicHandler());
ChannelHandler
的引用添加到新的管道上,而不是克隆
ChannelHandler
. 因此,你不能使用该方法在一个接受传入连接去创建子通道的服务器上打开多个Channel
.
Channel
应用不同的设置ServerBootstrap
仅仅是个帮助类. 他不分配和管理任何资源.管理资源是使用在构造方法指定的
ChannelFactory
类进行管理.因此,你可以在不同的ServerBootstrap
实例上使用相同的
ChannelFactory
为不同的Channel
应该不同的设置.
构造方法摘要 | |
---|---|
ServerBootstrap()
创建一个没有 ChannelFactory 设置的实例. |
|
ServerBootstrap(ChannelFactory channelFactory)
使用指定的 ChannelFactory 创建一个实例. |
方法摘要 | |
---|---|
Channel |
bind()
使用当前 "localAddress" 属性设置绑定的本地地址创建一个channel. |
Channel |
bind(java.net.SocketAddress localAddress)
/** 创建一个绑定到指定的本地地址的channel. |
ChannelHandler |
getParentHandler()
返回一个用来拦截最近绑定用来接受传入连接的服务端channel事件的可选 ChannelHandler . |
void |
setFactory(ChannelFactory factory)
设置一个用来处理I/O操作的 ChannelFactory
,这个方法只能被调用一次,如果通道工厂已经通过构造函数设置了,该方法会抛出异常 |
void |
setParentHandler(ChannelHandler parentHandler)
设置一个用来拦截最近绑定用来接受传入连接的服务端channel事件的可选 ChannelHandler . |
从类 org.jboss.netty.bootstrap.Bootstrap 继承的方法 |
---|
getFactory, getOption, getOptions, getPipeline, getPipelineAsMap, getPipelineFactory, releaseExternalResources, setOption, setOptions, setPipeline, setPipelineAsMap, setPipelineFactory |
从类 java.lang.Object 继承的方法 |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public ServerBootstrap()
ChannelFactory
设置的实例. setFactory(ChannelFactory)
方法
必须在任何I/O操作请求前被调用.
public ServerBootstrap(ChannelFactory channelFactory)
ChannelFactory
创建一个实例.
方法详细信息 |
---|
public void setFactory(ChannelFactory factory)
ChannelFactory
,这个方法只能被调用一次,如果通道工厂已经通过构造函数设置了,该方法会抛出异常
Bootstrap
中的 setFactory
java.lang.IllegalArgumentException
- 如果指定的factory
属性值不是一个 ServerChannelFactory
则抛出异常public ChannelHandler getParentHandler()
ChannelHandler
.
null
.public void setParentHandler(ChannelHandler parentHandler)
ChannelHandler
.
parentHandler
- 父channel handler.如果参数为null
,则取消当前设置的父channel handler.public Channel bind()
"localAddress"
属性设置绑定的本地地址创建一个channel. 该方法和以下代码很相似:
ServerBootstrap
b = ...;
b.bind(b.getOption("localAddress"));
java.lang.IllegalStateException
- 如果 "localAddress"
属性没有设置则抛出异常
java.lang.ClassCastException
- 如果 "localAddress"
属性的值既不是SocketAddress
也不是
null
时抛出异常
ChannelException
- 如果创建新的channel并绑定到本地地址失败时抛出异常public Channel bind(java.net.SocketAddress localAddress)
ChannelException
- 如果创建新的channel并绑定到本地地址失败时抛出异常
|
|||||||||
上一个类 下一个类 | 框架 无框架 | ||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |