2015-04-06 7 views
0

Я немного потерян. В последнее время я испытываю странное поведение в своем приложении, когда речь идет о нескольких параллельных вызовах ajax. Они проигрываются Play.Несколько асинхронных вызовов ajax в пуле воспроизведения

Точнее: у меня есть два вызова ajax A и B при отправке прибл. то же время на стороне клиента (с jQuery ajax()). В моем приложении Play приложение A должно быть обработано (и было обработано без каких-либо проблем с двух дней назад) действием 1. Точно так же вызов B должен обрабатываться действием 2.

Что на самом деле происходит, так это то, что иногда на самом деле вызов A обрабатывается действиями 1 и B на 2, но иногда оба A и B обрабатываются 1, или в другое время оба A и B обрабатываются с помощью 2. Я не мог найти какой-либо шаблон. Конечно, это поведение полностью смущает мою клиентскую сторону.

Я немного потерял сейчас. Я ничего не менял в маршрутизации и каких-либо других серьезных изменениях кода - я в основном работал над JavaScript и графическим интерфейсом. Поэтому я хочу спросить, есть ли у кого-нибудь еще что-то похожее на Play. Я мог бы отправить код, если это какая-то помощь (мне придется немного почистить его).

ответ

1

Я нашел причину - хотя я действительно не понимаю, почему это происходит. Причиной является аннотация объекта @Singleton из плагина Google Guice в классе композиции действий.

@Singleton 
public class AuthenticationAction extends Action<Authenticated> { 

@With(AuthenticationAction.class) 
@Target({ ElementType.TYPE, ElementType.METHOD }) 
@Retention(RetentionPolicy.RUNTIME) 
public @interface Authenticated { 
} 

private final UserDao userDao; 

@Inject 
AuthenticationAction(UserDao userService) { 
    this.userDao = userService; 
} 
... 

После того как я удалил @Singleton аннотацию он отлично работает снова, не более АЯКС Mixup вызова. :)

Все еще это довольно странное поведение.

Смежные вопросы