My application is configured as below. Under high load, I've seen that
responses build up and eventually cause OOM errors. Would i be correct to say
that threadPoolFilter is given priority for requests more than responses?
Brendan
<!-- UDP Datagram acceptor -->
<bean id="ioAcceptor"
class="org.apache.mina.transport.socket.nio.NioDatagramAcceptor"
init-method="bind"
destroy-method="unbind">
<property name="defaultLocalAddress" value="${itel.se.udp.port}"/>
<property name="handler" ref="seIoHandler"/>
<property name="filterChainBuilder" ref="filterChainBuilder"/>
</bean>
<!-- The filter chain. -->
<bean id="filterChainBuilder"
class="org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder">
<property name="filters">
<map>
<entry key="codecFilter" value-ref="codecFilter"/>
<entry key="loggingFilter" value-ref="loggingFilter"/>
<entry key="threadPoolFilter" value-ref="ioEventThreadPool"/>
</map>
</property>
</bean>
<!-- the IoFilters -->
<bean id="codecFilter" class="org.apache.mina.filter.codec.ProtocolCodecFilter">
<constructor-arg ref="receiverCodecFactory"/>
</bean>
<bean id="loggingFilter" class="org.apache.mina.filter.logging.LoggingFilter"/>
<bean id="ioEventThreadPool"
class="org.apache.mina.filter.executor.ExecutorFilter">
<constructor-arg>
<bean class="java.util.concurrent.ThreadPoolExecutor"
init-method="prestartAllCoreThreads" lazy-init="false"
destroy-method="shutdownNow">
<constructor-arg value="${itel.se.receiver.threadpool.size}"/>
<constructor-arg value="${itel.se.receiver.threadpool.size}"/>
<constructor-arg value="60"/>
<constructor-arg>
<util:constant
static-field="java.util.concurrent.TimeUnit.SECONDS" />
</constructor-arg>
<constructor-arg>
<bean class="java.util.concurrent.LinkedBlockingQueue"/>
</constructor-arg>
</bean>
</constructor-arg>
<constructor-arg>
<util:list>
<util:constant
static-field="org.apache.mina.core.session.IoEventType.MESSAGE_RECEIVED"/>
<util:constant
static-field="org.apache.mina.core.session.IoEventType.MESSAGE_SENT"/>
</util:list>
</constructor-arg>
</bean>