【发布时间】:2015-06-22 12:53:03
【问题描述】:
我有 2 个不同的操作,我同时收到了来自同一主机的对这 2 个操作的响应。
我想将一个动作延迟 30 秒。
我尝试使用Thread.sleep(30000),但它似乎延迟了这两个动作。
这两个动作都是后台进程,因此我不能使用 ExecuteAndWaitInterceptor。
以下是我要延迟的操作。
@Namespace(StrutsConstants.Namespace.PUBLIC)
public class CCAveDNHandlerAction extends BaseRequestResponseAwareAction {
private static Log log = LogFactory.getLog(CCAveDNHandlerAction.class);
public String execute() throws ModuleException {
log.info("CCAveDNHandlerAction ### Starting..");
try {
Thread.sleep(30000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Struts2 文档说 2 个不同的请求在 2 个不同的线程中执行。
但在这种情况下,它不会发生。可能是因为 2 个请求来自同一主机。有没有办法强制一个动作在单独的上下文中执行?
这是工作流程。
- 用户被重定向到外部支付网关页面。
- 用户成功付款并重定向回预定义的 我的应用程序中的操作。
- 同时支付网关发送另一个响应给另一个 我的应用程序的操作。(这是次要响应)
- 我使用
Thread.sleep进行此操作,整个过程已暂停。 - 我只想暂停次要响应。 我该怎么做?
【问题讨论】:
-
你能发布你的代码的一些部分吗?
-
用例是什么?你是如何执行你的行动的?
-
@AleksandrM :上面的代码是指用于处理服务器到服务器请求的操作。这用于保持付款确认。另一个操作处理从支付网关到我的应用程序端的重定向。
-
您是否使用 Spring 来管理操作?如果是,请发布您的conf
-
你能一步一步描述你的工作流程吗?
标签: java multithreading servlets struts2