希望使用支持Serlvet3.0异步的Struts2。
我的第一种方法是只处理写入操作中的outputstream并返回null。然而,这将返回一个404“资源不可用”。我正在尝试使用ServletRequestAware、ServletResponseAware接口在struts操作中适配Bosh servlet来注入响应。
我使用的是struts过滤器调度程序。不完全确定这是否可行,但如果其他人已经设法让async在struts操作中工作,我肯定会很高兴。也许这里有一个AsyncResult类型或者其他一些神奇的东西可以让它工作。
发布于 2014-07-15 04:13:59
确保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>然后,从操作中获取HttpServletRequest和HttpServletResponse,并像在servlet中一样使用AsyncContext:
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;
}https://stackoverflow.com/questions/12844797
复制相似问题