搜了很多文章,只有这篇有实际例子可以参看,
充分利用多核优势,高效并行渲染页面--改造nutz使其成为支持并行计算的MVC框架
http://www.iteye.com/topic/1125024
经过我验证,原来只要在mainModule上面添加 chainBy然后下面所有action默认的动作链都会变成mainModule上面的动作链,
好了,首先定制自己Processor,然后添加一个动作链配置文件,之后再mainModule 上面设定默认动作链,例子如下:
Processor:
package EasisWeb.Processor;
import org.nutz.mvc.impl.processor.AbstractProcessor;
import org.nutz.mvc.*;
public class SessionBeginProcessor extends AbstractProcessor {
public void process(ActionContext ac) throws Throwable {
System.out.println("开始执行session begin");
doNext(ac);
}
}
package EasisWeb.Processor;
import org.nutz.mvc.ActionContext;
import org.nutz.mvc.impl.processor.AbstractProcessor;
public class SessionEndProcessor extends AbstractProcessor {
public void process(ActionContext ac) throws Throwable {
System.out.println("开始执行session end");
doNext(ac);
}
}
设定动作链配置文件,
{
"default" : {
"ps" : [
"EasisWeb.Processor.SessionBeginProcessor",//处理session,负责寻找或分配sessionid,创建session等
"org.nutz.mvc.impl.processor.UpdateRequestAttributesProcessor",
"org.nutz.mvc.impl.processor.EncodingProcessor",
"org.nutz.mvc.impl.processor.ModuleProcessor",
"org.nutz.mvc.impl.processor.ActionFiltersProcessor",
"org.nutz.mvc.impl.processor.AdaptorProcessor",
"org.nutz.mvc.impl.processor.MethodInvokeProcessor",
"org.nutz.mvc.impl.processor.ViewProcessor",
"EasisWeb.Processor.SessionEndProcessor" //将该请求的session写入缓存服务器里面。
],
"error" : 'org.nutz.mvc.impl.processor.FailProcessor'
}
}
【注意:我直接放到src下面,名称为:default-chains.js】
在MainModule上面配置默认动作链:
package EasisWeb.Controller;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.ChainBy;
import org.nutz.mvc.annotation.Modules;
import org.nutz.mvc.annotation.Ok;
@Modules(scanPackage=true)
@ChainBy(args={"default-chains.js"})
public class MainModule {
@At("/hello")
@Ok("jsp:jsp.sayhello")
public String sayHello(){
Object ob1="";
return "hello!!!!";
}
}
然后将项目运行,访问几个网页,你会看到你添加的processor运行正常,在控制台我看到的是:
开始执行session begin
开始执行session end
开始执行session begin
开始执行session end
简单吧?