в моей серверной среде (Wildfly 10) У меня странная ситуация:
Я просмотрел экземпляр компонента, например X На этом компоненте я асинхронно вызываю метод 'y' (из старого приложения GWT - asyn c обратный вызов).
Код веб-приложения:
log.info("Before call y");
X.y(param);
log.info("After call y");
на методе сервера выглядит так:
public Object y(Param p){
log.info("In y");
Object obj = processParam(param);
log.info("Y processed");
return obj;
}
проблема в том, что иногда (иногда он работает отлично) зависает , Из моего исследования журнала я вижу, что 11 потоков вызывают Xy; В ситуации, когда он зависает, журнал каждого потока
[Thread-X] Before call y
[Thread-X] In y
[Thread-X] Y processed
, но позже возвращаемый объект никогда не получает в вызывающей стороне (все потоки зависают), и сообщение журнала After call y
никогда не будет зарегистрировано.
Любая идея где проблема? Я проверяю все перехватчики, обрабатываемые между клиентом и бином - наконец, ситуация выглядит как описано, последний перехватчик обрабатывается правильно. Похоже, что только код клиента java, wildfly и wildfly (jboss) является возможным местом зависания / тупика.
Добавлено: после большой отладки я обнаружил, что проблема между вызовом org.jboss .as.ejb3.remote.LocalEjbReceiver from org.jboss.ejb.client.EJBClientInvocationContext.sendRequest. Ниже показан экран из затмения: