【问题标题】:Spring @Async with App Engine?与 App Engine 一起使用 Spring @Async?
【发布时间】:2015-07-26 10:01:36
【问题描述】:

我正在尝试使用两个 @Async 注释方法在 App Engine 上异步调用两个单独的 servlet。 App Enging 上运行的代码不使用 Spring。它只是使用普通的 Java Servlet API。调用 servlet 的代码使用的是 Spring。

调用方法上的@Async 似乎不起作用。每个方法都被调用,并以正常顺序返回。 (方法->返回,方法->返回)

我在每个公共方法上都有@Async 注释。
我在调用方法的类上有@EnableAsync 注释。 这是两个独立的类。不涉及静态类。

我不确定这是因为 App Engine 不支持 Servlet 3.0,还是我没有正确配置 @Async

提前致谢!

【问题讨论】:

  • 发布一些配置。

标签: java spring google-app-engine servlets


【解决方案1】:

不幸的是,GAE 不支持 Serlvet 3.0 规范,如 this issue 所示。您显然可以转移到托管虚拟机并使用它,但沙盒 GAE 暂时不会使用 3.0。

【讨论】:

  • 经过进一步研究,我认为 App Engine 不是问题所在。我试图在两个不同的线程上从我的服务器发送两个调用。 App Engine 应该分别处理每一个(一个不知道另一个)。这基本上是一个“一劳永逸”的场景。在这一点上,我认为这仍然是@Async的配置问题。
【解决方案2】:

问题解决了!

问题是我把 xmlns:task="http://www.springframework.org/schema/task"task:annotation-driven条目。

我们的应用程序中有几个 XML 文件(用于导入其他 XML 文件)。最初,我将这些条目放在包含 @Async 注释的 bean 配置的 XML 中。为了让它工作,我不得不把它放在 applicationContext.xml

调用是在不同的线程上异步进行的,App Engine 正在处理它们。

【讨论】:

    猜你喜欢
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    • 2013-11-30
    • 2013-03-04
    相关资源
    最近更新 更多