多个异步 ajax 调用在 Play 的路由中混淆

Multiple, asynchronous ajax calls mix-up in Play's routing

我有点迷路了。最近,当涉及到多个并行 ajax 调用时,我在我的应用程序中遇到了奇怪的行为。他们被 Play 搞混了。

更准确地说:我有两个 ajax 电话 A 和 B 发送,时间约为。同时在客户端(使用 jQuery ajax())。在我的 Play 应用程序中,调用 A 应该由操作 1 处理(并且从几天前开始没有任何问题地处理)。以同样的方式调用 B 应该由操作 2 处理。

实际发生的情况是,有时调用 A 确实由操作 1 处理,调用 B 由操作 2 处理,但有时 A 和 B 都由 1 处理,或者有时 A 和 B 都由 2 处理。我不能'找到任何模式。当然,这种行为完全混淆了我的客户端。

我现在有点迷路了。我没有更改路由中的任何内容,也没有更改任何其他主要代码 - 我主要致力于 JavaScript 和 GUI。所以我想在这里问问有没有人有过类似的 Play 经历。如果有任何帮助,我可以 post 编写代码(我必须稍微清理一下)。

我找到了原因 - 虽然我不太明白为什么会这样。原因是来自 Google Guice 插件的 class 注释 @Singleton 动作组合 class。

@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 注释后它再次正常工作,不再 ajax 调用混淆。 :)

这仍然是一个很奇怪的行为。