@JFinal 你好,想跟你请教个问题:
JFinal2.1中在Config中加入事务拦截时,从第三个事务规则开始报错,不能定义多个规则吗?
2.0好像没有报错。@JFinalUIB中就是这样配置的。
/**
* 配置全局拦截器
*/
public void configInterceptor(Interceptors me) {
me.add(new GlobalInterceptor());
//配置开启事务规则
me.add(new TxByMethods("save", "update", "delete"));
me.add(new TxByMethodRegex(".*save.*"));
me.add(new TxByMethodRegex(".*update.*"));
me.add(new TxByMethodRegex(".*delete.*"));
}
报错信息:
java.lang.IllegalArgumentException: interceptor already exists, interceptor must be singlton, do not create more then one instance of the same Interceptor Class.
at com.jfinal.aop.InterceptorManager.addGlobalInterceptor(InterceptorManager.java:192)
at com.jfinal.aop.InterceptorManager.addGlobalActionInterceptor(InterceptorManager.java:175)
at com.jfinal.config.Interceptors.add(Interceptors.java:34)
at com.platform.config.run.BackConfig.configInterceptor(BackConfig.java:104)
at com.jfinal.core.Config.configJFinal(Config.java:50)
at com.jfinal.core.JFinal.init(JFinal.java:62)
at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:49)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4574)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5193)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
拦截器是单例的,所以会有这个异常抛出,正则可以合并,很容易,这样:
newTxByMethodRegex("(.*save.*|.*update.*|.*delete.*)");me.add(newTxByMethodRegex("(.*save.*|.*update.*|.*delete.*)"));
//多方法名匹配使用一个正则匹配,2.1只支持单实例注册
明白了,谢谢前面手误,正则写得不对,再更正一下:
拦截器是单例的,所以会有这个异常抛出,正则可以合并,很容易,这样:
newTxByMethodRegex("(.*save.*|.*update.*|.*delete.*)");版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。