Apache Mina ExecutorFilter - PullRequest
       26

Apache Mina ExecutorFilter

1 голос
/ 28 июня 2011

У меня есть приложение на основе Apache Mina 2.0.4, в котором я использую ExecutorFilter для создания потока в событии message_received.

Я обнаружил, что в производственной среде в какой-то момент времени ExecutorFilter не создает потоки. Вместо этого он блокирует сообщение запроса.

Может ли кто-нибудь рассказать, как правильно использовать ExecutorFilter? Я ожидаю до 100 одновременных подключений к моей заявке.

Это мой класс, который переопределяет класс ExecutorFilter-

открытый класс OneIExecutorFilter расширяет ExecutorFilter {

public OneIExecutorFilter(IoEventType...eventTypes){
    super(eventTypes);
}

@Override
public void sessionCreated(NextFilter nextFilter, IoSession session)
        throws Exception {      
    super.sessionCreated(nextFilter, session);
}   

@Override
protected void fireEvent(IoFilterEvent event) {             
    super.fireEvent(event);     
}   

}

Ответы [ 2 ]

0 голосов
/ 04 июля 2011

Вы не должны переопределять ExecutorFilter таким образом.Попробуйте вместо этого:

final int min = 1;
final int max = Integer.MAX_VALUE;

// RE: java.util.concurrent.Executors.newCachedThreadPool()
Executor executor = new ThreadPoolExecutor(min, max, 60, TimeUnit.SECONDS, 
    new SynchronousQueue<Runnable>())

ExecutorFilter ef = new ExecutorFilter(executor);
0 голосов
/ 28 июня 2011

Возможно, у вас закончились темы. Попробуйте использовать конструктор ExecutorFilter(int maximumPoolSize, IoEventType... eventTypes) с maximumPoolSize, установленным более чем на 100.

...