希望使用带有 Serlvet 3.0 异步支持的 Struts2。
我的第一个方法是只处理写入操作中的输出流并返回 null。然而,这会返回 404“资源不可用”。我试图在 struts 操作中调整 Bosh servlet,使用 ServletRequestAware、ServletResponseAware 接口来注入响应。
我正在使用 struts 过滤器调度程序。不完全确定这是否可行,但如果其他人设法在 struts 操作中实现异步工作,我肯定会很高兴。也许这里有一个 AsyncResult 类型或其他魔法来完成这项工作。
确保 struts 过滤器允许异步。 web.xml 文件中的内容如下:
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
<async-supported>true</async-supported>
</filter>
然后从 Action 中获取HttpServletRequest
and HttpServletResponse
并使用AsyncContext
就像在 servlet 中一样:
public String execute() {
HttpServletRequest req = ServletActionContext.getRequest();
HttpServletResponse res = ServletActionContext.getResponse();
final AsyncContext asyncContext = req.startAsync(req, res);
asyncContext.start(new Runnable() {
@Override
public void run() {
try {
// doing some work asynchronously ...
}
finally {
asyncContext.complete();
}
}
});
return Action.SUCCESS;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)