我正在运行EAP 7.1.0 CR2,并且在用于远程连接的频道创建选项中看到了一些奇怪的东西。用于远程EJB调用。未在xnio层上设置选项配置。我发现通道上的TCP_NODELAY属性没有设置为我在创建时指定的值。
在我的standalone-full.xml文件中,我的远程连接XNIO属性设置为
<remote connector-ref="http-remoting-connector" thread-pool-name="ejbWorker">
<channel-creation-options>
<option name="READ_TIMEOUT" value="${prop.remoting-connector.read.timeout:20}" type="xnio"/>
<option name="TCP_NODELAY" value="false" type="xnio"/>
<option name="WORKER_READ_THREADS" value="2" type="xnio"/>
<option name="WORKER_WRITE_THREADS" value="2" type="xnio"/>
<option name="MAX_INBOUND_MESSAGES" value="300" type="remoting"/>
<option name="MAX_OUTBOUND_MESSAGES" value="300" type="remoting"/>
</channel-creation-options>
</remote>
我希望远程处理子系统能够设置这些。但是,在XNIO上登录TRACE表明它没有。这是日志消息。
2017-11-22 19:42:20,170 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: JBoss EAP 7.1.0.GA (WildFly Core 3.0.3.Final-redhat-1) started in 265750ms - Started 1371 of 1652 services (502 services are lazy, passive or on-demand)
2017-11-22 19:43:22,937 TRACE [org.jboss.remoting.remote.connection] (ejbWorker I/O-2) Initialized connection from /192.168.0.4:48861 to /192.168.0.4:8084 with options {org.xnio.Options.TCP_NODELAY=>true,org.jboss.remoting3.RemotingOptions.SASL_PROTOCOL=
>remote,org.xnio.Options.REUSE_ADDRESSES=>true}
查看wildfly-core远程处理子系统中的代码,org.jboss.as.remoting.HttpConnectorAdd.launchServices方法使用org.jboss.as.remoting.ConnectorUtils.getFullOptions来获取属性Map。违约
{org.jboss.remoting3.RemotingOptions.SASL_PROTOCOL=>remote,org.xnio.Options.TCP_NODELAY=>true,org.xnio.Options.REUSE_ADDRESSES=>true}
我希望更新OptionsMap。使用通道创建选项中的设置。我错了,期待这个吗?
此致 杰里米
答案 0 :(得分:1)
EJB子系统远程/频道创建选项设置不会通过org.jboss.as.remoting.HttpConnectorAdd
。它们会被传递到org.jboss.as.ejb3.remote.EJBRemoteConnectorService
,然后将它们传递到远程Endpoint.registerService
电话。 AFAICT只有从传递给该方法的OptionMap读取的选项是
RemotingOptions.TRANSMIT_WINDOW_SIZE,
RemotingOptions.MAX_OUTBOUND_MESSAGES
RemotingOptions.RECEIVE_WINDOW_SIZE
RemotingOptions.MAX_INBOUND_MESSAGES
这是由org.jboss.remoting3.remote.RemoteReadListener
完成的,因为它在连接上收到频道打开请求后设置频道。