gpt4 book ai didi

java - Spring @Async 是否适用于客户端-服务器通信?

转载 作者:行者123 更新时间:2023-12-01 12:59:08 25 4
gpt4 key购买 nike

我已经阅读了 Spring 关于 @Async 的文档,但我不清楚这是否应该仅在调用者和被调用服务位于同一 JVM 中时才起作用。

我在 Tomcat 上部署了一个 Spring Web 应用程序,还有一个 Swing 应用程序,使用 Spring HttpInvoker 在这两者之间进行通信。我想从客户端调用服务器服务并异步返回结果。我是否必须构建其他东西,或者我可以使用 @Async 吗?

当在同一个 JVM 中测试它时,它起作用了。当使用 2 个 JVM 进行测试时,我得到了

java.io.NotSerializableException: java.util.concurrent.FutureTask

在服务器上,这意味着我无法在两个 JVM 上使用此机制。

有什么想法吗?

在我发现的许多关于 @Async 的教程中,似乎没有一个涵盖远程调用和返回值的情况。

最佳答案

两个 JVM 之间绝对没有任何关系。

您使用的客户端向 HTTP 服务器发送 HTTP 请求,然后 HTTP 服务器以 HTTP 响应进行响应。这里的所有都是它的。

Spring 的 @Async 注释旨在指示方法应该在异步上下文中运行。这与 HTTP 客户端完全没有关系。这是在 Web 应用程序中调用的方法。

您收到的错误与您调用该方法的方式以及尝试向客户端发送 HTTP 响应的方式有关。当说它适用于一个 JVM 和两个 JVM 时,您几乎是在将苹果与橘子进行比较。 JVM 并不重要。重要的是,在一种情况下,您正在调用该方法。在另一种情况下,您有一个客户端/服务器设置,其中服务器无法将某些实体序列化为 HTTP 响应。

关于java - Spring @Async 是否适用于客户端-服务器通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23658800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com